mapaccess1_faststr

help

Click on a value or block to toggle highlighting of that value/block and its uses. (Values and blocks are highlighted by ID, and IDs of dead items may be reused, so not all highlights necessarily correspond to the clicked item.)

Faded out values and blocks are dead code that has not been eliminated.

Values printed in italics have a dependency cycle.

CFG: Dashed edge is for unlikely branches. Blue color is for backward edges. Edge with a dot means that this edge follows the order in which blocks were laidout.

sources

 
 
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
 
/home/qingfeng.yy/go/src/runtime/map_faststr.go
func mapaccess1_faststr(t *maptype, h *hmap, ky string) unsafe.Pointer {
if raceenabled && h != nil {
callerpc := getcallerpc()
racereadpc(unsafe.Pointer(h), callerpc, abi.FuncPCABIInternal(mapaccess1_faststr))
}
if h == nil || h.count == 0 {
return unsafe.Pointer(&zeroVal[0])
}
if h.flags&hashWriting != 0 {
fatal("concurrent map read and map write")
}
key := stringStructOf(&ky)
if h.B == 0 {
// One-bucket table.
b := (*bmap)(h.buckets)
if key.len < 32 {
// short key, doing lots of comparisons is ok
for i, kptr := uintptr(0), b.keys(); i < bucketCnt; i, kptr = i+1, add(kptr, 2*goarch.PtrSize) {
k := (*stringStruct)(kptr)
if k.len != key.len || isEmpty(b.tophash[i]) {
if b.tophash[i] == emptyRest {
break
}
continue
}
if k.str == key.str || memequal(k.str, key.str, uintptr(key.len)) {
return add(unsafe.Pointer(b), dataOffset+bucketCnt*2*goarch.PtrSize+i*uintptr(t.ValueSize))
}
}
return unsafe.Pointer(&zeroVal[0])
}
// long key, try not to do more comparisons than necessary
keymaybe := uintptr(bucketCnt)
for i, kptr := uintptr(0), b.keys(); i < bucketCnt; i, kptr = i+1, add(kptr, 2*goarch.PtrSize) {
k := (*stringStruct)(kptr)
if k.len != key.len || isEmpty(b.tophash[i]) {
if b.tophash[i] == emptyRest {
break
}
continue
}
if k.str == key.str {
return add(unsafe.Pointer(b), dataOffset+bucketCnt*2*goarch.PtrSize+i*uintptr(t.ValueSize))
}
// check first 4 bytes
if *((*[4]byte)(key.str)) != *((*[4]byte)(k.str)) {
continue
}
// check last 4 bytes
if *((*[4]byte)(add(key.str, uintptr(key.len)-4))) != *((*[4]byte)(add(k.str, uintptr(key.len)-4))) {
continue
}
if keymaybe != bucketCnt {
// Two keys are potential matches. Use hash to distinguish them.
goto dohash
}
keymaybe = i
}
if keymaybe != bucketCnt {
k := (*stringStruct)(add(unsafe.Pointer(b), dataOffset+keymaybe*2*goarch.PtrSize))
if memequal(k.str, key.str, uintptr(key.len)) {
return add(unsafe.Pointer(b), dataOffset+bucketCnt*2*goarch.PtrSize+keymaybe*uintptr(t.ValueSize))
}
}
return unsafe.Pointer(&zeroVal[0])
}
dohash:
hash := t.Hasher(noescape(unsafe.Pointer(&ky)), uintptr(h.hash0))
m := bucketMask(h.B)
b := (*bmap)(add(h.buckets, (hash&m)*uintptr(t.BucketSize)))
if c := h.oldbuckets; c != nil {
if !h.sameSizeGrow() {
// There used to be half as many buckets; mask down one more power of two.
m >>= 1
}
oldb := (*bmap)(add(c, (hash&m)*uintptr(t.BucketSize)))
if !evacuated(oldb) {
b = oldb
}
}
top := tophash(hash)
for ; b != nil; b = b.overflow(t) {
for i, kptr := uintptr(0), b.keys(); i < bucketCnt; i, kptr = i+1, add(kptr, 2*goarch.PtrSize) {
k := (*stringStruct)(kptr)
if k.len != key.len || b.tophash[i] != top {
continue
}
if k.str == key.str || memequal(k.str, key.str, uintptr(key.len)) {
return add(unsafe.Pointer(b), dataOffset+bucketCnt*2*goarch.PtrSize+i*uintptr(t.ValueSize))
}
}
}
return unsafe.Pointer(&zeroVal[0])
}

AST

buildssa-enter
buildssa-body
. IF tc(1) # map_faststr.go:14:2
. IF-Cond
. . LITERAL-false bool tc(1) # map_faststr.go:14:5
. IF-init
. . AS tc(1) # map_faststr.go:18:14
. . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . EQ bool tc(1) # map_faststr.go:18:7
. . . . NAME-runtime.h esc(no) Class:PPARAM Offset:0 OnStack Used PTR-*hmap tc(1) # map_faststr.go:13:37
. . . . NIL PTR-*hmap tc(1) # map_faststr.go:18:10
. . IF # map_faststr.go:18:14
. . IF-Cond
. . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . IF-Else
. . . AS tc(1) # map_faststr.go:18:14
. . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . EQ bool tc(1) # map_faststr.go:18:25
. . . . . DOTPTR runtime.count int tc(1) # map_faststr.go:18:18
. . . . . . NAME-runtime.h esc(no) Class:PPARAM Offset:0 OnStack Used PTR-*hmap tc(1) # map_faststr.go:13:37
. . . . . LITERAL-0 int tc(1) # map_faststr.go:18:28
. IF tc(1) # map_faststr.go:18:2
. IF-Cond
. . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. IF-Body
. . RETURN tc(1) # map_faststr.go:19:3
. . RETURN-Results
. . . AS tc(1) # map_faststr.go:19:3
. . . . NAME-runtime.~r0 esc(no) Class:PPARAMOUT Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:13:57
. . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:19:25
. . . . . ADDR PTR-*byte tc(1) # map_faststr.go:19:25
. . . . . . INDEX Bounded byte tc(1) # map_faststr.go:19:33
. . . . . . . NAME-runtime.zeroVal Class:PEXTERN Offset:0 Addrtaken Used ARRAY-[1024]byte tc(1) # map.go:1440:5
. . . . . . . LITERAL-0 int tc(1) # map_faststr.go:19:34
. IF tc(1) # map_faststr.go:21:2
. IF-Cond
. . NE bool tc(1) # map_faststr.go:21:25
. . . AND uint8 tc(1) # map_faststr.go:21:12
. . . . DOTPTR runtime.flags uint8 tc(1) # map_faststr.go:21:6
. . . . . NAME-runtime.h esc(no) Class:PPARAM Offset:0 OnStack Used PTR-*hmap tc(1) # map_faststr.go:13:37
. . . . LITERAL-4 uint8 tc(1) # map_faststr.go:21:13
. . . LITERAL-0 uint8 tc(1) # map_faststr.go:21:28
. IF-Body
. . CALLFUNC Walked tc(1) # map_faststr.go:22:8
. . . NAME-runtime.fatal Class:PFUNC Offset:0 Used FUNC-func(string) tc(1) # panic.go:1089:6
. . CALLFUNC-Args
. . . LITERAL-"concurrent map read and map write" string tc(1) # map_faststr.go:22:9
. DCL # map_faststr.go:24:2
. . NAME-runtime.key esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:2
. DCL # map_faststr.go:24:23
. . NAME-runtime.sp esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*string tc(1) # map_faststr.go:24:23 string.go:243:21
. BLOCK # map_faststr.go:24:23
. BLOCK-List
. . AS tc(1) # map_faststr.go:24:23
. . . NAME-runtime.sp esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*string tc(1) # map_faststr.go:24:23 string.go:243:21
. . . ADDR PTR-*string tc(1) # map_faststr.go:24:24
. . . . NAME-runtime.ky esc(no) Class:PPARAM Offset:0 Addrtaken OnStack Used string tc(1) # map_faststr.go:13:46
. INLMARK Index:5605 # +map_faststr.go:24:23
. DCL tc(1) # map_faststr.go:24:23
. . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:23 string.go:243:33
. BLOCK # map_faststr.go:24:23
. BLOCK-List
. . AS tc(1) # map_faststr.go:24:23
. . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:23 string.go:243:33
. . . CONVNOP PTR-*stringStruct tc(1) # map_faststr.go:24:23 string.go:244:39
. . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:24:23 string.go:244:40
. . . . . NAME-runtime.sp esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*string tc(1) # map_faststr.go:24:23 string.go:243:21
. GOTO runtime..i0 tc(1) # map_faststr.go:24:23
. LABEL runtime..i0 # map_faststr.go:24:23
. AS Def tc(1) # map_faststr.go:24:6
. . NAME-runtime.key esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:2
. . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:23 string.go:243:33
. IF tc(1) # map_faststr.go:25:2
. IF-Cond
. . EQ bool tc(1) # map_faststr.go:25:9
. . . DOTPTR runtime.B uint8 tc(1) # map_faststr.go:25:6
. . . . NAME-runtime.h esc(no) Class:PPARAM Offset:0 OnStack Used PTR-*hmap tc(1) # map_faststr.go:13:37
. . . LITERAL-0 uint8 tc(1) # map_faststr.go:25:12
. IF-Body
. . DCL # map_faststr.go:27:3
. . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:27:3
. . AS Def tc(1) # map_faststr.go:27:5
. . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:27:3
. . . CONVNOP PTR-*bmap tc(1) # map_faststr.go:27:17
. . . . DOTPTR runtime.buckets UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:27:17
. . . . . NAME-runtime.h esc(no) Class:PPARAM Offset:0 OnStack Used PTR-*hmap tc(1) # map_faststr.go:13:37
. . IF tc(1) # map_faststr.go:28:3
. . IF-Cond
. . . LT bool tc(1) # map_faststr.go:28:14
. . . . DOTPTR runtime.len int tc(1) # map_faststr.go:28:9
. . . . . NAME-runtime.key esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:2
. . . . LITERAL-32 int tc(1) # map_faststr.go:28:16
. . IF-Body
. . . DCL # map_faststr.go:30:8
. . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:30:8
. . . DCL # map_faststr.go:30:11
. . . . NAME-runtime.kptr esc(no) Class:PAUTO Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:11
. . . DCL # map_faststr.go:30:37
. . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*bmap tc(1) # map_faststr.go:30:37 map.go:217:7
. . . BLOCK # map_faststr.go:30:37
. . . BLOCK-List
. . . . AS tc(1) # map_faststr.go:30:37
. . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*bmap tc(1) # map_faststr.go:30:37 map.go:217:7
. . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:27:3
. . . INLMARK Index:5606 # +map_faststr.go:30:37
. . . DCL tc(1) # map_faststr.go:30:37
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:37 map.go:217:23
. . . DCL # map_faststr.go:30:37 map.go:218:12
. . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:37 map.go:218:12 stubs.go:17:10
. . . DCL # map_faststr.go:30:37 map.go:218:12
. . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:30:37 map.go:218:12 stubs.go:17:28
. . . BLOCK # map_faststr.go:30:37 map.go:218:12
. . . BLOCK-List
. . . . AS tc(1) # map_faststr.go:30:37 map.go:218:12
. . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:37 map.go:218:12 stubs.go:17:10
. . . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:37 map.go:218:28
. . . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*bmap tc(1) # map_faststr.go:30:37 map.go:217:7
. . . . AS tc(1) # map_faststr.go:30:37 map.go:218:12
. . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:30:37 map.go:218:12 stubs.go:17:28
. . . . . LITERAL-8 uintptr tc(1) # map_faststr.go:30:37 map.go:218:32
. . . INLMARK Index:5629 # +map_faststr.go:30:37 map.go:218:12
. . . DCL tc(1) # map_faststr.go:30:37 map.go:218:12
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:37 map.go:218:12 stubs.go:17:39
. . . BLOCK # map_faststr.go:30:37 map.go:218:12
. . . BLOCK-List
. . . . AS tc(1) # map_faststr.go:30:37 map.go:218:12
. . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:37 map.go:218:12 stubs.go:17:39
. . . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:37 map.go:218:12 stubs.go:18:35
. . . . . . ADD uintptr tc(1) # map_faststr.go:30:37 map.go:218:12 stubs.go:18:35
. . . . . . . CONVNOP uintptr tc(1) # map_faststr.go:30:37 map.go:218:12 stubs.go:18:32
. . . . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:37 map.go:218:12 stubs.go:17:10
. . . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:30:37 map.go:218:12 stubs.go:17:28
. . . GOTO runtime..i24 tc(1) # map_faststr.go:30:37 map.go:218:12
. . . LABEL runtime..i24 # map_faststr.go:30:37 map.go:218:12
. . . BLOCK # map_faststr.go:30:37
. . . BLOCK-List
. . . . AS tc(1) # map_faststr.go:30:37
. . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:37 map.go:217:23
. . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:37 map.go:218:12 stubs.go:17:39
. . . GOTO runtime..i1 tc(1) # map_faststr.go:30:37
. . . LABEL runtime..i1 # map_faststr.go:30:37
. . . BLOCK # map_faststr.go:30:16
. . . BLOCK-List
. . . . AS tc(1) # map_faststr.go:30:16
. . . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:30:8
. . . . . LITERAL-0 uintptr tc(1) # map_faststr.go:30:26
. . . . AS tc(1) # map_faststr.go:30:16
. . . . . NAME-runtime.kptr esc(no) Class:PAUTO Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:11
. . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:37 map.go:217:23
. . . FOR tc(1) # map_faststr.go:30:4
. . . FOR-Cond
. . . . LT bool tc(1) # map_faststr.go:30:43
. . . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:30:8
. . . . . LITERAL-8 uintptr tc(1) # map_faststr.go:30:45
. . . FOR-Post
. . . . BLOCK # map_faststr.go:30:74
. . . . BLOCK-List
. . . . . DCL # map_faststr.go:30:74
. . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:74 stubs.go:17:10
. . . . . DCL # map_faststr.go:30:74
. . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:30:74 stubs.go:17:28
. . . . . BLOCK # map_faststr.go:30:74
. . . . . BLOCK-List
. . . . . . AS tc(1) # map_faststr.go:30:74
. . . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:74 stubs.go:17:10
. . . . . . . NAME-runtime.kptr esc(no) Class:PAUTO Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:11
. . . . . . AS tc(1) # map_faststr.go:30:74
. . . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:30:74 stubs.go:17:28
. . . . . . . LITERAL-16 uintptr tc(1) # map_faststr.go:30:82
. . . . . INLMARK Index:5607 # +map_faststr.go:30:74
. . . . . DCL tc(1) # map_faststr.go:30:74
. . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:74 stubs.go:17:39
. . . . . BLOCK # map_faststr.go:30:74
. . . . . BLOCK-List
. . . . . . AS tc(1) # map_faststr.go:30:74
. . . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:74 stubs.go:17:39
. . . . . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:74 stubs.go:18:35
. . . . . . . . ADD uintptr tc(1) # map_faststr.go:30:74 stubs.go:18:35
. . . . . . . . . CONVNOP uintptr tc(1) # map_faststr.go:30:74 stubs.go:18:32
. . . . . . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:74 stubs.go:17:10
. . . . . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:30:74 stubs.go:17:28
. . . . . GOTO runtime..i2 tc(1) # map_faststr.go:30:74
. . . . . LABEL runtime..i2 # map_faststr.go:30:74
. . . . . BLOCK # map_faststr.go:30:64
. . . . . BLOCK-List
. . . . . . AS tc(1) # map_faststr.go:30:64
. . . . . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:30:8
. . . . . . . ADD uintptr tc(1) # map_faststr.go:30:67
. . . . . . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:30:8
. . . . . . . . LITERAL-1 uintptr tc(1) # map_faststr.go:30:68
. . . . . . AS tc(1) # map_faststr.go:30:64
. . . . . . . NAME-runtime.kptr esc(no) Class:PAUTO Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:11
. . . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:74 stubs.go:17:39
. . . FOR-Body
. . . . DCL # map_faststr.go:31:5
. . . . . NAME-runtime.k esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:31:5
. . . . AS Def tc(1) # map_faststr.go:31:7
. . . . . NAME-runtime.k esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:31:5
. . . . . CONVNOP PTR-*stringStruct tc(1) # map_faststr.go:31:26
. . . . . . NAME-runtime.kptr esc(no) Class:PAUTO Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:30:11
. . . . IF-init
. . . . . AS tc(1) # map_faststr.go:32:25
. . . . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . . . NE bool tc(1) # map_faststr.go:32:14
. . . . . . . DOTPTR runtime.len int tc(1) # map_faststr.go:32:9
. . . . . . . . NAME-runtime.k esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:31:5
. . . . . . . DOTPTR runtime.len int tc(1) # map_faststr.go:32:20
. . . . . . . . NAME-runtime.key esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:2
. . . . . IF # map_faststr.go:32:25
. . . . . IF-Cond
. . . . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . . IF-Else
. . . . . . DCL # map_faststr.go:32:35
. . . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uint8 tc(1) # map_faststr.go:32:35 map.go:112:14
. . . . . . BLOCK # map_faststr.go:32:35
. . . . . . BLOCK-List
. . . . . . . AS tc(1) # map_faststr.go:32:35
. . . . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uint8 tc(1) # map_faststr.go:32:35 map.go:112:14
. . . . . . . . INDEX uint8 tc(1) # map_faststr.go:32:45
. . . . . . . . . DOTPTR runtime.tophash ARRAY-[8]uint8 tc(1) # map_faststr.go:32:37
. . . . . . . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:27:3
. . . . . . . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:30:8
. . . . . . INLMARK Index:5608 # +map_faststr.go:32:35
. . . . . . DCL tc(1) # map_faststr.go:32:35
. . . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used bool tc(1) # map_faststr.go:32:35 map.go:112:23
. . . . . . BLOCK # map_faststr.go:32:35
. . . . . . BLOCK-List
. . . . . . . AS tc(1) # map_faststr.go:32:35
. . . . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used bool tc(1) # map_faststr.go:32:35 map.go:112:23
. . . . . . . . LE bool tc(1) # map_faststr.go:32:35 map.go:113:11
. . . . . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uint8 tc(1) # map_faststr.go:32:35 map.go:112:14
. . . . . . . . . LITERAL-1 uint8 tc(1) # map_faststr.go:32:35 map.go:113:14
. . . . . . GOTO runtime..i3 tc(1) # map_faststr.go:32:35
. . . . . . LABEL runtime..i3 # map_faststr.go:32:35
. . . . . . AS tc(1) # map_faststr.go:32:25
. . . . . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used bool tc(1) # map_faststr.go:32:35 map.go:112:23
. . . . IF tc(1) # map_faststr.go:32:5
. . . . IF-Cond
. . . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . IF-Body
. . . . . IF tc(1) # map_faststr.go:33:6
. . . . . IF-Cond
. . . . . . EQ bool tc(1) # map_faststr.go:33:22
. . . . . . . INDEX uint8 tc(1) # map_faststr.go:33:18
. . . . . . . . DOTPTR runtime.tophash ARRAY-[8]uint8 tc(1) # map_faststr.go:33:10
. . . . . . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:27:3
. . . . . . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:30:8
. . . . . . . LITERAL-0 uint8 tc(1) # map_faststr.go:33:25
. . . . . IF-Body
. . . . . . BREAK tc(1) # map_faststr.go:34:7
. . . . . CONTINUE tc(1) # map_faststr.go:36:6
. . . . IF-init
. . . . . AS tc(1) # map_faststr.go:38:25
. . . . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . . . EQ bool tc(1) # map_faststr.go:38:14
. . . . . . . DOTPTR runtime.str UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:38:9
. . . . . . . . NAME-runtime.k esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:31:5
. . . . . . . DOTPTR runtime.str UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:38:20
. . . . . . . . NAME-runtime.key esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:2
. . . . . IF # map_faststr.go:38:25
. . . . . IF-Cond
. . . . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . . IF-Else
. . . . . . AS-init
. . . . . . . AS tc(1) # map_faststr.go:38:36
. . . . . . . . NAME-runtime..autotmp_104 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:38:36
. . . . . . . . DOTPTR runtime.str UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:38:38
. . . . . . . . . NAME-runtime.k esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:31:5
. . . . . . . AS tc(1) # map_faststr.go:38:36
. . . . . . . . NAME-runtime..autotmp_105 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:38:36
. . . . . . . . DOTPTR runtime.str UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:38:47
. . . . . . . . . NAME-runtime.key esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:2
. . . . . . . AS tc(1) # map_faststr.go:38:36
. . . . . . . . NAME-runtime..autotmp_106 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used uintptr tc(1) # map_faststr.go:38:36
. . . . . . . . CONV uintptr tc(1) # map_faststr.go:38:64
. . . . . . . . . DOTPTR runtime.len int tc(1) # map_faststr.go:38:64
. . . . . . . . . . NAME-runtime.key esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:2
. . . . . . AS tc(1) # map_faststr.go:38:36
. . . . . . . NAME-runtime..autotmp_103 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:38:36
. . . . . . . CALLFUNC Walked bool tc(1) # map_faststr.go:38:36
. . . . . . . . NAME-runtime.memequal Class:PFUNC Offset:0 Used FUNC-func(unsafe.Pointer, unsafe.Pointer, uintptr) bool tc(1) # stubs.go:211:6
. . . . . . . CALLFUNC-Args
. . . . . . . . NAME-runtime..autotmp_104 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:38:36
. . . . . . . . NAME-runtime..autotmp_105 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:38:36
. . . . . . . . NAME-runtime..autotmp_106 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used uintptr tc(1) # map_faststr.go:38:36
. . . . . . AS tc(1) # map_faststr.go:38:25
. . . . . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . . . . NAME-runtime..autotmp_103 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:38:36
. . . . IF tc(1) # map_faststr.go:38:5
. . . . IF-Cond
. . . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . IF-Body
. . . . . DCL # map_faststr.go:39:16
. . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:39:16 stubs.go:17:10
. . . . . DCL # map_faststr.go:39:16
. . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:39:16 stubs.go:17:28
. . . . . BLOCK # map_faststr.go:39:16
. . . . . BLOCK-List
. . . . . . AS tc(1) # map_faststr.go:39:16
. . . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:39:16 stubs.go:17:10
. . . . . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:39:32
. . . . . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:27:3
. . . . . . AS tc(1) # map_faststr.go:39:16
. . . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:39:16 stubs.go:17:28
. . . . . . . ADD uintptr tc(1) # map_faststr.go:39:73
. . . . . . . . LITERAL-136 uintptr tc(1) # map_faststr.go:39:46
. . . . . . . . MUL uintptr tc(1) # map_faststr.go:39:75
. . . . . . . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:30:8
. . . . . . . . . CONV uintptr tc(1) # map_faststr.go:39:85
. . . . . . . . . . DOTPTR runtime.ValueSize uint8 tc(1) # map_faststr.go:39:85
. . . . . . . . . . . NAME-runtime.t esc(no) Class:PPARAM Offset:0 OnStack Used PTR-*abi.MapType tc(1) # map_faststr.go:13:25
. . . . . INLMARK Index:5609 # +map_faststr.go:39:16
. . . . . DCL tc(1) # map_faststr.go:39:16
. . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:39:16 stubs.go:17:39
. . . . . BLOCK # map_faststr.go:39:16
. . . . . BLOCK-List
. . . . . . AS tc(1) # map_faststr.go:39:16
. . . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:39:16 stubs.go:17:39
. . . . . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:39:16 stubs.go:18:35
. . . . . . . . ADD uintptr tc(1) # map_faststr.go:39:16 stubs.go:18:35
. . . . . . . . . CONVNOP uintptr tc(1) # map_faststr.go:39:16 stubs.go:18:32
. . . . . . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:39:16 stubs.go:17:10
. . . . . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:39:16 stubs.go:17:28
. . . . . GOTO runtime..i4 tc(1) # map_faststr.go:39:16
. . . . . LABEL runtime..i4 # map_faststr.go:39:16
. . . . . RETURN tc(1) # map_faststr.go:39:6
. . . . . RETURN-Results
. . . . . . AS tc(1) # map_faststr.go:39:6
. . . . . . . NAME-runtime.~r0 esc(no) Class:PPARAMOUT Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:13:57
. . . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:39:16 stubs.go:17:39
. . . RETURN tc(1) # map_faststr.go:42:4
. . . RETURN-Results
. . . . AS tc(1) # map_faststr.go:42:4
. . . . . NAME-runtime.~r0 esc(no) Class:PPARAMOUT Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:13:57
. . . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:42:26
. . . . . . ADDR PTR-*byte tc(1) # map_faststr.go:42:26
. . . . . . . INDEX Bounded byte tc(1) # map_faststr.go:42:34
. . . . . . . . NAME-runtime.zeroVal Class:PEXTERN Offset:0 Addrtaken Used ARRAY-[1024]byte tc(1) # map.go:1440:5
. . . . . . . . LITERAL-0 int tc(1) # map_faststr.go:42:35
. . DCL # map_faststr.go:45:3
. . . NAME-runtime.keymaybe esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:45:3
. . AS Def tc(1) # map_faststr.go:45:12
. . . NAME-runtime.keymaybe esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:45:3
. . . LITERAL-8 uintptr tc(1) # map_faststr.go:45:22
. . DCL # map_faststr.go:46:7
. . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:46:7
. . DCL # map_faststr.go:46:10
. . . NAME-runtime.kptr esc(no) Class:PAUTO Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:10
. . DCL # map_faststr.go:46:36
. . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*bmap tc(1) # map_faststr.go:46:36 map.go:217:7
. . BLOCK # map_faststr.go:46:36
. . BLOCK-List
. . . AS tc(1) # map_faststr.go:46:36
. . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*bmap tc(1) # map_faststr.go:46:36 map.go:217:7
. . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:27:3
. . INLMARK Index:5610 # +map_faststr.go:46:36
. . DCL tc(1) # map_faststr.go:46:36
. . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:36 map.go:217:23
. . DCL # map_faststr.go:46:36 map.go:218:12
. . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:36 map.go:218:12 stubs.go:17:10
. . DCL # map_faststr.go:46:36 map.go:218:12
. . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:46:36 map.go:218:12 stubs.go:17:28
. . BLOCK # map_faststr.go:46:36 map.go:218:12
. . BLOCK-List
. . . AS tc(1) # map_faststr.go:46:36 map.go:218:12
. . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:36 map.go:218:12 stubs.go:17:10
. . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:36 map.go:218:28
. . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*bmap tc(1) # map_faststr.go:46:36 map.go:217:7
. . . AS tc(1) # map_faststr.go:46:36 map.go:218:12
. . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:46:36 map.go:218:12 stubs.go:17:28
. . . . LITERAL-8 uintptr tc(1) # map_faststr.go:46:36 map.go:218:32
. . INLMARK Index:5630 # +map_faststr.go:46:36 map.go:218:12
. . DCL tc(1) # map_faststr.go:46:36 map.go:218:12
. . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:36 map.go:218:12 stubs.go:17:39
. . BLOCK # map_faststr.go:46:36 map.go:218:12
. . BLOCK-List
. . . AS tc(1) # map_faststr.go:46:36 map.go:218:12
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:36 map.go:218:12 stubs.go:17:39
. . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:36 map.go:218:12 stubs.go:18:35
. . . . . ADD uintptr tc(1) # map_faststr.go:46:36 map.go:218:12 stubs.go:18:35
. . . . . . CONVNOP uintptr tc(1) # map_faststr.go:46:36 map.go:218:12 stubs.go:18:32
. . . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:36 map.go:218:12 stubs.go:17:10
. . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:46:36 map.go:218:12 stubs.go:17:28
. . GOTO runtime..i25 tc(1) # map_faststr.go:46:36 map.go:218:12
. . LABEL runtime..i25 # map_faststr.go:46:36 map.go:218:12
. . BLOCK # map_faststr.go:46:36
. . BLOCK-List
. . . AS tc(1) # map_faststr.go:46:36
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:36 map.go:217:23
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:36 map.go:218:12 stubs.go:17:39
. . GOTO runtime..i5 tc(1) # map_faststr.go:46:36
. . LABEL runtime..i5 # map_faststr.go:46:36
. . BLOCK # map_faststr.go:46:15
. . BLOCK-List
. . . AS tc(1) # map_faststr.go:46:15
. . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:46:7
. . . . LITERAL-0 uintptr tc(1) # map_faststr.go:46:25
. . . AS tc(1) # map_faststr.go:46:15
. . . . NAME-runtime.kptr esc(no) Class:PAUTO Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:10
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:36 map.go:217:23
. . FOR tc(1) # map_faststr.go:46:3
. . FOR-Cond
. . . LT bool tc(1) # map_faststr.go:46:42
. . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:46:7
. . . . LITERAL-8 uintptr tc(1) # map_faststr.go:46:44
. . FOR-Post
. . . BLOCK # map_faststr.go:46:73
. . . BLOCK-List
. . . . DCL # map_faststr.go:46:73
. . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:73 stubs.go:17:10
. . . . DCL # map_faststr.go:46:73
. . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:46:73 stubs.go:17:28
. . . . BLOCK # map_faststr.go:46:73
. . . . BLOCK-List
. . . . . AS tc(1) # map_faststr.go:46:73
. . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:73 stubs.go:17:10
. . . . . . NAME-runtime.kptr esc(no) Class:PAUTO Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:10
. . . . . AS tc(1) # map_faststr.go:46:73
. . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:46:73 stubs.go:17:28
. . . . . . LITERAL-16 uintptr tc(1) # map_faststr.go:46:81
. . . . INLMARK Index:5611 # +map_faststr.go:46:73
. . . . DCL tc(1) # map_faststr.go:46:73
. . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:73 stubs.go:17:39
. . . . BLOCK # map_faststr.go:46:73
. . . . BLOCK-List
. . . . . AS tc(1) # map_faststr.go:46:73
. . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:73 stubs.go:17:39
. . . . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:73 stubs.go:18:35
. . . . . . . ADD uintptr tc(1) # map_faststr.go:46:73 stubs.go:18:35
. . . . . . . . CONVNOP uintptr tc(1) # map_faststr.go:46:73 stubs.go:18:32
. . . . . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:73 stubs.go:17:10
. . . . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:46:73 stubs.go:17:28
. . . . GOTO runtime..i6 tc(1) # map_faststr.go:46:73
. . . . LABEL runtime..i6 # map_faststr.go:46:73
. . . . BLOCK # map_faststr.go:46:63
. . . . BLOCK-List
. . . . . AS tc(1) # map_faststr.go:46:63
. . . . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:46:7
. . . . . . ADD uintptr tc(1) # map_faststr.go:46:66
. . . . . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:46:7
. . . . . . . LITERAL-1 uintptr tc(1) # map_faststr.go:46:67
. . . . . AS tc(1) # map_faststr.go:46:63
. . . . . . NAME-runtime.kptr esc(no) Class:PAUTO Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:10
. . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:73 stubs.go:17:39
. . FOR-Body
. . . DCL # map_faststr.go:47:4
. . . . NAME-runtime.k esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:47:4
. . . AS Def tc(1) # map_faststr.go:47:6
. . . . NAME-runtime.k esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:47:4
. . . . CONVNOP PTR-*stringStruct tc(1) # map_faststr.go:47:25
. . . . . NAME-runtime.kptr esc(no) Class:PAUTO Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:46:10
. . . IF-init
. . . . AS tc(1) # map_faststr.go:48:24
. . . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . . NE bool tc(1) # map_faststr.go:48:13
. . . . . . DOTPTR runtime.len int tc(1) # map_faststr.go:48:8
. . . . . . . NAME-runtime.k esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:47:4
. . . . . . DOTPTR runtime.len int tc(1) # map_faststr.go:48:19
. . . . . . . NAME-runtime.key esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:2
. . . . IF # map_faststr.go:48:24
. . . . IF-Cond
. . . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . IF-Else
. . . . . DCL # map_faststr.go:48:34
. . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uint8 tc(1) # map_faststr.go:48:34 map.go:112:14
. . . . . BLOCK # map_faststr.go:48:34
. . . . . BLOCK-List
. . . . . . AS tc(1) # map_faststr.go:48:34
. . . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uint8 tc(1) # map_faststr.go:48:34 map.go:112:14
. . . . . . . INDEX uint8 tc(1) # map_faststr.go:48:44
. . . . . . . . DOTPTR runtime.tophash ARRAY-[8]uint8 tc(1) # map_faststr.go:48:36
. . . . . . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:27:3
. . . . . . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:46:7
. . . . . INLMARK Index:5612 # +map_faststr.go:48:34
. . . . . DCL tc(1) # map_faststr.go:48:34
. . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used bool tc(1) # map_faststr.go:48:34 map.go:112:23
. . . . . BLOCK # map_faststr.go:48:34
. . . . . BLOCK-List
. . . . . . AS tc(1) # map_faststr.go:48:34
. . . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used bool tc(1) # map_faststr.go:48:34 map.go:112:23
. . . . . . . LE bool tc(1) # map_faststr.go:48:34 map.go:113:11
. . . . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uint8 tc(1) # map_faststr.go:48:34 map.go:112:14
. . . . . . . . LITERAL-1 uint8 tc(1) # map_faststr.go:48:34 map.go:113:14
. . . . . GOTO runtime..i7 tc(1) # map_faststr.go:48:34
. . . . . LABEL runtime..i7 # map_faststr.go:48:34
. . . . . AS tc(1) # map_faststr.go:48:24
. . . . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used bool tc(1) # map_faststr.go:48:34 map.go:112:23
. . . IF tc(1) # map_faststr.go:48:4
. . . IF-Cond
. . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . IF-Body
. . . . IF tc(1) # map_faststr.go:49:5
. . . . IF-Cond
. . . . . EQ bool tc(1) # map_faststr.go:49:21
. . . . . . INDEX uint8 tc(1) # map_faststr.go:49:17
. . . . . . . DOTPTR runtime.tophash ARRAY-[8]uint8 tc(1) # map_faststr.go:49:9
. . . . . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:27:3
. . . . . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:46:7
. . . . . . LITERAL-0 uint8 tc(1) # map_faststr.go:49:24
. . . . IF-Body
. . . . . BREAK tc(1) # map_faststr.go:50:6
. . . . CONTINUE tc(1) # map_faststr.go:52:5
. . . IF tc(1) # map_faststr.go:54:4
. . . IF-Cond
. . . . EQ bool tc(1) # map_faststr.go:54:13
. . . . . DOTPTR runtime.str UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:54:8
. . . . . . NAME-runtime.k esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:47:4
. . . . . DOTPTR runtime.str UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:54:19
. . . . . . NAME-runtime.key esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:2
. . . IF-Body
. . . . DCL # map_faststr.go:55:15
. . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:55:15 stubs.go:17:10
. . . . DCL # map_faststr.go:55:15
. . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:55:15 stubs.go:17:28
. . . . BLOCK # map_faststr.go:55:15
. . . . BLOCK-List
. . . . . AS tc(1) # map_faststr.go:55:15
. . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:55:15 stubs.go:17:10
. . . . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:55:31
. . . . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:27:3
. . . . . AS tc(1) # map_faststr.go:55:15
. . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:55:15 stubs.go:17:28
. . . . . . ADD uintptr tc(1) # map_faststr.go:55:72
. . . . . . . LITERAL-136 uintptr tc(1) # map_faststr.go:55:45
. . . . . . . MUL uintptr tc(1) # map_faststr.go:55:74
. . . . . . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:46:7
. . . . . . . . CONV uintptr tc(1) # map_faststr.go:55:84
. . . . . . . . . DOTPTR runtime.ValueSize uint8 tc(1) # map_faststr.go:55:84
. . . . . . . . . . NAME-runtime.t esc(no) Class:PPARAM Offset:0 OnStack Used PTR-*abi.MapType tc(1) # map_faststr.go:13:25
. . . . INLMARK Index:5613 # +map_faststr.go:55:15
. . . . DCL tc(1) # map_faststr.go:55:15
. . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:55:15 stubs.go:17:39
. . . . BLOCK # map_faststr.go:55:15
. . . . BLOCK-List
. . . . . AS tc(1) # map_faststr.go:55:15
. . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:55:15 stubs.go:17:39
. . . . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:55:15 stubs.go:18:35
. . . . . . . ADD uintptr tc(1) # map_faststr.go:55:15 stubs.go:18:35
. . . . . . . . CONVNOP uintptr tc(1) # map_faststr.go:55:15 stubs.go:18:32
. . . . . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:55:15 stubs.go:17:10
. . . . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:55:15 stubs.go:17:28
. . . . GOTO runtime..i8 tc(1) # map_faststr.go:55:15
. . . . LABEL runtime..i8 # map_faststr.go:55:15
. . . . RETURN tc(1) # map_faststr.go:55:5
. . . . RETURN-Results
. . . . . AS tc(1) # map_faststr.go:55:5
. . . . . . NAME-runtime.~r0 esc(no) Class:PPARAMOUT Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:13:57
. . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:55:15 stubs.go:17:39
. . . IF-init
. . . . AS tc(1) # map_faststr.go:58:30
. . . . . NAME-runtime..autotmp_107 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used PTR-*[4]byte tc(1) # map_faststr.go:58:30
. . . . . CONVNOP PTR-*[4]byte tc(1) # map_faststr.go:58:23
. . . . . . DOTPTR runtime.str UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:58:23
. . . . . . . NAME-runtime.key esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:2
. . . . AS tc(1) # map_faststr.go:58:30
. . . . . NAME-runtime..autotmp_108 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used PTR-*[4]byte tc(1) # map_faststr.go:58:30
. . . . . CONVNOP PTR-*[4]byte tc(1) # map_faststr.go:58:47
. . . . . . DOTPTR runtime.str UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:58:47
. . . . . . . NAME-runtime.k esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:47:4
. . . IF tc(1) # map_faststr.go:58:4
. . . IF-Cond
. . . . NE bool tc(1) # map_faststr.go:58:30
. . . . . OR uint32 tc(1) # map_faststr.go:58:30
. . . . . . OR uint32 tc(1) # map_faststr.go:58:30
. . . . . . . OR uint32 tc(1) # map_faststr.go:58:30
. . . . . . . . CONV uint32 tc(1) # map_faststr.go:58:30
. . . . . . . . . CONVNOP uint8 tc(1) # map_faststr.go:58:30
. . . . . . . . . . INDEX Bounded byte tc(1) # map_faststr.go:58:30
. . . . . . . . . . . DEREF ARRAY-[4]byte tc(1) # map_faststr.go:58:7
. . . . . . . . . . . . NAME-runtime..autotmp_107 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used PTR-*[4]byte tc(1) # map_faststr.go:58:30
. . . . . . . . . . . LITERAL-0 int tc(1) # map_faststr.go:58:30
. . . . . . . . LSH uint32 tc(1) # map_faststr.go:58:30
. . . . . . . . . CONV uint32 tc(1) # map_faststr.go:58:30
. . . . . . . . . . CONVNOP uint8 tc(1) # map_faststr.go:58:30
. . . . . . . . . . . INDEX Bounded byte tc(1) # map_faststr.go:58:30
. . . . . . . . . . . . DEREF ARRAY-[4]byte tc(1) # map_faststr.go:58:7
. . . . . . . . . . . . . NAME-runtime..autotmp_107 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used PTR-*[4]byte tc(1) # map_faststr.go:58:30
. . . . . . . . . . . . LITERAL-1 int tc(1) # map_faststr.go:58:30
. . . . . . . . . LITERAL-8 uint tc(1) # map_faststr.go:58:30
. . . . . . . LSH uint32 tc(1) # map_faststr.go:58:30
. . . . . . . . CONV uint32 tc(1) # map_faststr.go:58:30
. . . . . . . . . CONVNOP uint8 tc(1) # map_faststr.go:58:30
. . . . . . . . . . INDEX Bounded byte tc(1) # map_faststr.go:58:30
. . . . . . . . . . . DEREF ARRAY-[4]byte tc(1) # map_faststr.go:58:7
. . . . . . . . . . . . NAME-runtime..autotmp_107 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used PTR-*[4]byte tc(1) # map_faststr.go:58:30
. . . . . . . . . . . LITERAL-2 int tc(1) # map_faststr.go:58:30
. . . . . . . . LITERAL-16 uint tc(1) # map_faststr.go:58:30
. . . . . . LSH uint32 tc(1) # map_faststr.go:58:30
. . . . . . . CONV uint32 tc(1) # map_faststr.go:58:30
. . . . . . . . CONVNOP uint8 tc(1) # map_faststr.go:58:30
. . . . . . . . . INDEX Bounded byte tc(1) # map_faststr.go:58:30
. . . . . . . . . . DEREF ARRAY-[4]byte tc(1) # map_faststr.go:58:7
. . . . . . . . . . . NAME-runtime..autotmp_107 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used PTR-*[4]byte tc(1) # map_faststr.go:58:30
. . . . . . . . . . LITERAL-3 int tc(1) # map_faststr.go:58:30
. . . . . . . LITERAL-24 uint tc(1) # map_faststr.go:58:30
. . . . . OR uint32 tc(1) # map_faststr.go:58:30
. . . . . . OR uint32 tc(1) # map_faststr.go:58:30
. . . . . . . OR uint32 tc(1) # map_faststr.go:58:30
. . . . . . . . CONV uint32 tc(1) # map_faststr.go:58:30
. . . . . . . . . CONVNOP uint8 tc(1) # map_faststr.go:58:30
. . . . . . . . . . INDEX Bounded byte tc(1) # map_faststr.go:58:30
. . . . . . . . . . . DEREF ARRAY-[4]byte tc(1) # map_faststr.go:58:33
. . . . . . . . . . . . NAME-runtime..autotmp_108 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used PTR-*[4]byte tc(1) # map_faststr.go:58:30
. . . . . . . . . . . LITERAL-0 int tc(1) # map_faststr.go:58:30
. . . . . . . . LSH uint32 tc(1) # map_faststr.go:58:30
. . . . . . . . . CONV uint32 tc(1) # map_faststr.go:58:30
. . . . . . . . . . CONVNOP uint8 tc(1) # map_faststr.go:58:30
. . . . . . . . . . . INDEX Bounded byte tc(1) # map_faststr.go:58:30
. . . . . . . . . . . . DEREF ARRAY-[4]byte tc(1) # map_faststr.go:58:33
. . . . . . . . . . . . . NAME-runtime..autotmp_108 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used PTR-*[4]byte tc(1) # map_faststr.go:58:30
. . . . . . . . . . . . LITERAL-1 int tc(1) # map_faststr.go:58:30
. . . . . . . . . LITERAL-8 uint tc(1) # map_faststr.go:58:30
. . . . . . . LSH uint32 tc(1) # map_faststr.go:58:30
. . . . . . . . CONV uint32 tc(1) # map_faststr.go:58:30
. . . . . . . . . CONVNOP uint8 tc(1) # map_faststr.go:58:30
. . . . . . . . . . INDEX Bounded byte tc(1) # map_faststr.go:58:30
. . . . . . . . . . . DEREF ARRAY-[4]byte tc(1) # map_faststr.go:58:33
. . . . . . . . . . . . NAME-runtime..autotmp_108 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used PTR-*[4]byte tc(1) # map_faststr.go:58:30
. . . . . . . . . . . LITERAL-2 int tc(1) # map_faststr.go:58:30
. . . . . . . . LITERAL-16 uint tc(1) # map_faststr.go:58:30
. . . . . . LSH uint32 tc(1) # map_faststr.go:58:30
. . . . . . . CONV uint32 tc(1) # map_faststr.go:58:30
. . . . . . . . CONVNOP uint8 tc(1) # map_faststr.go:58:30
. . . . . . . . . INDEX Bounded byte tc(1) # map_faststr.go:58:30
. . . . . . . . . . DEREF ARRAY-[4]byte tc(1) # map_faststr.go:58:33
. . . . . . . . . . . NAME-runtime..autotmp_108 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used PTR-*[4]byte tc(1) # map_faststr.go:58:30
. . . . . . . . . . LITERAL-3 int tc(1) # map_faststr.go:58:30
. . . . . . . LITERAL-24 uint tc(1) # map_faststr.go:58:30
. . . IF-Body
. . . . CONTINUE tc(1) # map_faststr.go:59:5
. . . IF-init
. . . . DCL # map_faststr.go:62:23
. . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:62:23 stubs.go:17:10
. . . . DCL # map_faststr.go:62:23
. . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:62:23 stubs.go:17:28
. . . . BLOCK # map_faststr.go:62:23
. . . . BLOCK-List
. . . . . AS tc(1) # map_faststr.go:62:23
. . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:62:23 stubs.go:17:10
. . . . . . DOTPTR runtime.str UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:62:27
. . . . . . . NAME-runtime.key esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:2
. . . . . AS tc(1) # map_faststr.go:62:23
. . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:62:23 stubs.go:17:28
. . . . . . SUB uintptr tc(1) # map_faststr.go:62:49
. . . . . . . CONV uintptr tc(1) # map_faststr.go:62:44
. . . . . . . . DOTPTR runtime.len int tc(1) # map_faststr.go:62:44
. . . . . . . . . NAME-runtime.key esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:2
. . . . . . . LITERAL-4 uintptr tc(1) # map_faststr.go:62:50
. . . . INLMARK Index:5614 # +map_faststr.go:62:23
. . . . DCL tc(1) # map_faststr.go:62:23
. . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:62:23 stubs.go:17:39
. . . . BLOCK # map_faststr.go:62:23
. . . . BLOCK-List
. . . . . AS tc(1) # map_faststr.go:62:23
. . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:62:23 stubs.go:17:39
. . . . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:62:23 stubs.go:18:35
. . . . . . . ADD uintptr tc(1) # map_faststr.go:62:23 stubs.go:18:35
. . . . . . . . CONVNOP uintptr tc(1) # map_faststr.go:62:23 stubs.go:18:32
. . . . . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:62:23 stubs.go:17:10
. . . . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:62:23 stubs.go:17:28
. . . . GOTO runtime..i9 tc(1) # map_faststr.go:62:23
. . . . LABEL runtime..i9 # map_faststr.go:62:23
. . . . DCL # map_faststr.go:62:74
. . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:62:74 stubs.go:17:10
. . . . DCL # map_faststr.go:62:74
. . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:62:74 stubs.go:17:28
. . . . BLOCK # map_faststr.go:62:74
. . . . BLOCK-List
. . . . . AS tc(1) # map_faststr.go:62:74
. . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:62:74 stubs.go:17:10
. . . . . . DOTPTR runtime.str UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:62:76
. . . . . . . NAME-runtime.k esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:47:4
. . . . . AS tc(1) # map_faststr.go:62:74
. . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:62:74 stubs.go:17:28
. . . . . . SUB uintptr tc(1) # map_faststr.go:62:98
. . . . . . . CONV uintptr tc(1) # map_faststr.go:62:93
. . . . . . . . DOTPTR runtime.len int tc(1) # map_faststr.go:62:93
. . . . . . . . . NAME-runtime.key esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:2
. . . . . . . LITERAL-4 uintptr tc(1) # map_faststr.go:62:99
. . . . INLMARK Index:5615 # +map_faststr.go:62:74
. . . . DCL tc(1) # map_faststr.go:62:74
. . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:62:74 stubs.go:17:39
. . . . BLOCK # map_faststr.go:62:74
. . . . BLOCK-List
. . . . . AS tc(1) # map_faststr.go:62:74
. . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:62:74 stubs.go:17:39
. . . . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:62:74 stubs.go:18:35
. . . . . . . ADD uintptr tc(1) # map_faststr.go:62:74 stubs.go:18:35
. . . . . . . . CONVNOP uintptr tc(1) # map_faststr.go:62:74 stubs.go:18:32
. . . . . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:62:74 stubs.go:17:10
. . . . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:62:74 stubs.go:17:28
. . . . GOTO runtime..i10 tc(1) # map_faststr.go:62:74
. . . . LABEL runtime..i10 # map_faststr.go:62:74
. . . . AS tc(1) # map_faststr.go:62:55
. . . . . NAME-runtime..autotmp_109 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used PTR-*[4]byte tc(1) # map_faststr.go:62:55
. . . . . CONVNOP PTR-*[4]byte tc(1) # map_faststr.go:62:23
. . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:62:23 stubs.go:17:39
. . . . AS tc(1) # map_faststr.go:62:55
. . . . . NAME-runtime..autotmp_110 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used PTR-*[4]byte tc(1) # map_faststr.go:62:55
. . . . . CONVNOP PTR-*[4]byte tc(1) # map_faststr.go:62:74
. . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:62:74 stubs.go:17:39
. . . IF tc(1) # map_faststr.go:62:4
. . . IF-Cond
. . . . NE bool tc(1) # map_faststr.go:62:55
. . . . . OR uint32 tc(1) # map_faststr.go:62:55
. . . . . . OR uint32 tc(1) # map_faststr.go:62:55
. . . . . . . OR uint32 tc(1) # map_faststr.go:62:55
. . . . . . . . CONV uint32 tc(1) # map_faststr.go:62:55
. . . . . . . . . CONVNOP uint8 tc(1) # map_faststr.go:62:55
. . . . . . . . . . INDEX Bounded byte tc(1) # map_faststr.go:62:55
. . . . . . . . . . . DEREF ARRAY-[4]byte tc(1) # map_faststr.go:62:7
. . . . . . . . . . . . NAME-runtime..autotmp_109 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used PTR-*[4]byte tc(1) # map_faststr.go:62:55
. . . . . . . . . . . LITERAL-0 int tc(1) # map_faststr.go:62:55
. . . . . . . . LSH uint32 tc(1) # map_faststr.go:62:55
. . . . . . . . . CONV uint32 tc(1) # map_faststr.go:62:55
. . . . . . . . . . CONVNOP uint8 tc(1) # map_faststr.go:62:55
. . . . . . . . . . . INDEX Bounded byte tc(1) # map_faststr.go:62:55
. . . . . . . . . . . . DEREF ARRAY-[4]byte tc(1) # map_faststr.go:62:7
. . . . . . . . . . . . . NAME-runtime..autotmp_109 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used PTR-*[4]byte tc(1) # map_faststr.go:62:55
. . . . . . . . . . . . LITERAL-1 int tc(1) # map_faststr.go:62:55
. . . . . . . . . LITERAL-8 uint tc(1) # map_faststr.go:62:55
. . . . . . . LSH uint32 tc(1) # map_faststr.go:62:55
. . . . . . . . CONV uint32 tc(1) # map_faststr.go:62:55
. . . . . . . . . CONVNOP uint8 tc(1) # map_faststr.go:62:55
. . . . . . . . . . INDEX Bounded byte tc(1) # map_faststr.go:62:55
. . . . . . . . . . . DEREF ARRAY-[4]byte tc(1) # map_faststr.go:62:7
. . . . . . . . . . . . NAME-runtime..autotmp_109 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used PTR-*[4]byte tc(1) # map_faststr.go:62:55
. . . . . . . . . . . LITERAL-2 int tc(1) # map_faststr.go:62:55
. . . . . . . . LITERAL-16 uint tc(1) # map_faststr.go:62:55
. . . . . . LSH uint32 tc(1) # map_faststr.go:62:55
. . . . . . . CONV uint32 tc(1) # map_faststr.go:62:55
. . . . . . . . CONVNOP uint8 tc(1) # map_faststr.go:62:55
. . . . . . . . . INDEX Bounded byte tc(1) # map_faststr.go:62:55
. . . . . . . . . . DEREF ARRAY-[4]byte tc(1) # map_faststr.go:62:7
. . . . . . . . . . . NAME-runtime..autotmp_109 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used PTR-*[4]byte tc(1) # map_faststr.go:62:55
. . . . . . . . . . LITERAL-3 int tc(1) # map_faststr.go:62:55
. . . . . . . LITERAL-24 uint tc(1) # map_faststr.go:62:55
. . . . . OR uint32 tc(1) # map_faststr.go:62:55
. . . . . . OR uint32 tc(1) # map_faststr.go:62:55
. . . . . . . OR uint32 tc(1) # map_faststr.go:62:55
. . . . . . . . CONV uint32 tc(1) # map_faststr.go:62:55
. . . . . . . . . CONVNOP uint8 tc(1) # map_faststr.go:62:55
. . . . . . . . . . INDEX Bounded byte tc(1) # map_faststr.go:62:55
. . . . . . . . . . . DEREF ARRAY-[4]byte tc(1) # map_faststr.go:62:58
. . . . . . . . . . . . NAME-runtime..autotmp_110 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used PTR-*[4]byte tc(1) # map_faststr.go:62:55
. . . . . . . . . . . LITERAL-0 int tc(1) # map_faststr.go:62:55
. . . . . . . . LSH uint32 tc(1) # map_faststr.go:62:55
. . . . . . . . . CONV uint32 tc(1) # map_faststr.go:62:55
. . . . . . . . . . CONVNOP uint8 tc(1) # map_faststr.go:62:55
. . . . . . . . . . . INDEX Bounded byte tc(1) # map_faststr.go:62:55
. . . . . . . . . . . . DEREF ARRAY-[4]byte tc(1) # map_faststr.go:62:58
. . . . . . . . . . . . . NAME-runtime..autotmp_110 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used PTR-*[4]byte tc(1) # map_faststr.go:62:55
. . . . . . . . . . . . LITERAL-1 int tc(1) # map_faststr.go:62:55
. . . . . . . . . LITERAL-8 uint tc(1) # map_faststr.go:62:55
. . . . . . . LSH uint32 tc(1) # map_faststr.go:62:55
. . . . . . . . CONV uint32 tc(1) # map_faststr.go:62:55
. . . . . . . . . CONVNOP uint8 tc(1) # map_faststr.go:62:55
. . . . . . . . . . INDEX Bounded byte tc(1) # map_faststr.go:62:55
. . . . . . . . . . . DEREF ARRAY-[4]byte tc(1) # map_faststr.go:62:58
. . . . . . . . . . . . NAME-runtime..autotmp_110 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used PTR-*[4]byte tc(1) # map_faststr.go:62:55
. . . . . . . . . . . LITERAL-2 int tc(1) # map_faststr.go:62:55
. . . . . . . . LITERAL-16 uint tc(1) # map_faststr.go:62:55
. . . . . . LSH uint32 tc(1) # map_faststr.go:62:55
. . . . . . . CONV uint32 tc(1) # map_faststr.go:62:55
. . . . . . . . CONVNOP uint8 tc(1) # map_faststr.go:62:55
. . . . . . . . . INDEX Bounded byte tc(1) # map_faststr.go:62:55
. . . . . . . . . . DEREF ARRAY-[4]byte tc(1) # map_faststr.go:62:58
. . . . . . . . . . . NAME-runtime..autotmp_110 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used PTR-*[4]byte tc(1) # map_faststr.go:62:55
. . . . . . . . . . LITERAL-3 int tc(1) # map_faststr.go:62:55
. . . . . . . LITERAL-24 uint tc(1) # map_faststr.go:62:55
. . . IF-Body
. . . . CONTINUE tc(1) # map_faststr.go:63:5
. . . IF tc(1) # map_faststr.go:65:4
. . . IF-Cond
. . . . NE bool tc(1) # map_faststr.go:65:16
. . . . . NAME-runtime.keymaybe esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:45:3
. . . . . LITERAL-8 uintptr tc(1) # map_faststr.go:65:19
. . . IF-Body
. . . . GOTO runtime.dohash tc(1) # map_faststr.go:67:5
. . . AS tc(1) # map_faststr.go:69:13
. . . . NAME-runtime.keymaybe esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:45:3
. . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:46:7
. . IF tc(1) # map_faststr.go:71:3
. . IF-Cond
. . . NE bool tc(1) # map_faststr.go:71:15
. . . . NAME-runtime.keymaybe esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:45:3
. . . . LITERAL-8 uintptr tc(1) # map_faststr.go:71:18
. . IF-Body
. . . DCL # map_faststr.go:72:4
. . . . NAME-runtime.k esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:72:4
. . . DCL # map_faststr.go:72:28
. . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:72:28 stubs.go:17:10
. . . DCL # map_faststr.go:72:28
. . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:72:28 stubs.go:17:28
. . . BLOCK # map_faststr.go:72:28
. . . BLOCK-List
. . . . AS tc(1) # map_faststr.go:72:28
. . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:72:28 stubs.go:17:10
. . . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:72:44
. . . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:27:3
. . . . AS tc(1) # map_faststr.go:72:28
. . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:72:28 stubs.go:17:28
. . . . . ADD uintptr tc(1) # map_faststr.go:72:58
. . . . . . LITERAL-8 uintptr tc(1) # map_faststr.go:72:48
. . . . . . MUL uintptr tc(1) # map_faststr.go:72:69
. . . . . . . MUL uintptr tc(1) # map_faststr.go:72:67
. . . . . . . . NAME-runtime.keymaybe esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:45:3
. . . . . . . . LITERAL-2 uintptr tc(1) # map_faststr.go:72:68
. . . . . . . LITERAL-8 uintptr tc(1) # map_faststr.go:72:76
. . . INLMARK Index:5616 # +map_faststr.go:72:28
. . . DCL tc(1) # map_faststr.go:72:28
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:72:28 stubs.go:17:39
. . . BLOCK # map_faststr.go:72:28
. . . BLOCK-List
. . . . AS tc(1) # map_faststr.go:72:28
. . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:72:28 stubs.go:17:39
. . . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:72:28 stubs.go:18:35
. . . . . . ADD uintptr tc(1) # map_faststr.go:72:28 stubs.go:18:35
. . . . . . . CONVNOP uintptr tc(1) # map_faststr.go:72:28 stubs.go:18:32
. . . . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:72:28 stubs.go:17:10
. . . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:72:28 stubs.go:17:28
. . . GOTO runtime..i11 tc(1) # map_faststr.go:72:28
. . . LABEL runtime..i11 # map_faststr.go:72:28
. . . AS Def tc(1) # map_faststr.go:72:6
. . . . NAME-runtime.k esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:72:4
. . . . CONVNOP PTR-*stringStruct tc(1) # map_faststr.go:72:28
. . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:72:28 stubs.go:17:39
. . . IF-init
. . . . AS-init
. . . . . AS tc(1) # map_faststr.go:73:15
. . . . . . NAME-runtime..autotmp_111 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:73:15
. . . . . . DOTPTR runtime.str UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:73:17
. . . . . . . NAME-runtime.k esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:72:4
. . . . . AS tc(1) # map_faststr.go:73:15
. . . . . . NAME-runtime..autotmp_112 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:73:15
. . . . . . DOTPTR runtime.str UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:73:26
. . . . . . . NAME-runtime.key esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:2
. . . . . AS tc(1) # map_faststr.go:73:15
. . . . . . NAME-runtime..autotmp_113 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used uintptr tc(1) # map_faststr.go:73:15
. . . . . . CONV uintptr tc(1) # map_faststr.go:73:43
. . . . . . . DOTPTR runtime.len int tc(1) # map_faststr.go:73:43
. . . . . . . . NAME-runtime.key esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:2
. . . . AS tc(1) # map_faststr.go:73:15
. . . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . . CALLFUNC Walked bool tc(1) # map_faststr.go:73:15
. . . . . . NAME-runtime.memequal Class:PFUNC Offset:0 Used FUNC-func(unsafe.Pointer, unsafe.Pointer, uintptr) bool tc(1) # stubs.go:211:6
. . . . . CALLFUNC-Args
. . . . . . NAME-runtime..autotmp_111 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:73:15
. . . . . . NAME-runtime..autotmp_112 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:73:15
. . . . . . NAME-runtime..autotmp_113 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used uintptr tc(1) # map_faststr.go:73:15
. . . IF tc(1) # map_faststr.go:73:4
. . . IF-Cond
. . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . IF-Body
. . . . DCL # map_faststr.go:74:15
. . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:74:15 stubs.go:17:10
. . . . DCL # map_faststr.go:74:15
. . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:74:15 stubs.go:17:28
. . . . BLOCK # map_faststr.go:74:15
. . . . BLOCK-List
. . . . . AS tc(1) # map_faststr.go:74:15
. . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:74:15 stubs.go:17:10
. . . . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:74:31
. . . . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:27:3
. . . . . AS tc(1) # map_faststr.go:74:15
. . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:74:15 stubs.go:17:28
. . . . . . ADD uintptr tc(1) # map_faststr.go:74:72
. . . . . . . LITERAL-136 uintptr tc(1) # map_faststr.go:74:45
. . . . . . . MUL uintptr tc(1) # map_faststr.go:74:81
. . . . . . . . NAME-runtime.keymaybe esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:45:3
. . . . . . . . CONV uintptr tc(1) # map_faststr.go:74:91
. . . . . . . . . DOTPTR runtime.ValueSize uint8 tc(1) # map_faststr.go:74:91
. . . . . . . . . . NAME-runtime.t esc(no) Class:PPARAM Offset:0 OnStack Used PTR-*abi.MapType tc(1) # map_faststr.go:13:25
. . . . INLMARK Index:5617 # +map_faststr.go:74:15
. . . . DCL tc(1) # map_faststr.go:74:15
. . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:74:15 stubs.go:17:39
. . . . BLOCK # map_faststr.go:74:15
. . . . BLOCK-List
. . . . . AS tc(1) # map_faststr.go:74:15
. . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:74:15 stubs.go:17:39
. . . . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:74:15 stubs.go:18:35
. . . . . . . ADD uintptr tc(1) # map_faststr.go:74:15 stubs.go:18:35
. . . . . . . . CONVNOP uintptr tc(1) # map_faststr.go:74:15 stubs.go:18:32
. . . . . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:74:15 stubs.go:17:10
. . . . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:74:15 stubs.go:17:28
. . . . GOTO runtime..i12 tc(1) # map_faststr.go:74:15
. . . . LABEL runtime..i12 # map_faststr.go:74:15
. . . . RETURN tc(1) # map_faststr.go:74:5
. . . . RETURN-Results
. . . . . AS tc(1) # map_faststr.go:74:5
. . . . . . NAME-runtime.~r0 esc(no) Class:PPARAMOUT Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:13:57
. . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:74:15 stubs.go:17:39
. . RETURN tc(1) # map_faststr.go:77:3
. . RETURN-Results
. . . AS tc(1) # map_faststr.go:77:3
. . . . NAME-runtime.~r0 esc(no) Class:PPARAMOUT Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:13:57
. . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:77:25
. . . . . ADDR PTR-*byte tc(1) # map_faststr.go:77:25
. . . . . . INDEX Bounded byte tc(1) # map_faststr.go:77:33
. . . . . . . NAME-runtime.zeroVal Class:PEXTERN Offset:0 Addrtaken Used ARRAY-[1024]byte tc(1) # map.go:1440:5
. . . . . . . LITERAL-0 int tc(1) # map_faststr.go:77:34
. LABEL runtime.dohash tc(1) # map_faststr.go:79:7
. DCL # map_faststr.go:80:2
. . NAME-runtime.hash esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:80:2
. DCL # map_faststr.go:80:27
. . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:80:27 stubs.go:220:15
. BLOCK # map_faststr.go:80:27
. BLOCK-List
. . AS tc(1) # map_faststr.go:80:27
. . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:80:27 stubs.go:220:15
. . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:80:43
. . . . ADDR PTR-*string tc(1) # map_faststr.go:80:43
. . . . . NAME-runtime.ky esc(no) Class:PPARAM Offset:0 Addrtaken OnStack Used string tc(1) # map_faststr.go:13:46
. INLMARK Index:5618 # +map_faststr.go:80:27
. DCL # map_faststr.go:80:27 stubs.go:221:2
. . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlLocal OnStack Used uintptr tc(1) # map_faststr.go:80:27 stubs.go:221:2
. AS Def tc(1) # map_faststr.go:80:27 stubs.go:221:4
. . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlLocal OnStack Used uintptr tc(1) # map_faststr.go:80:27 stubs.go:221:2
. . CONVNOP uintptr tc(1) # map_faststr.go:80:27 stubs.go:221:15
. . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:80:27 stubs.go:220:15
. DCL tc(1) # map_faststr.go:80:27
. . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:80:27 stubs.go:220:33
. BLOCK # map_faststr.go:80:27
. BLOCK-List
. . AS tc(1) # map_faststr.go:80:27
. . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:80:27 stubs.go:220:33
. . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:80:27 stubs.go:222:26
. . . . XOR uintptr tc(1) # map_faststr.go:80:27 stubs.go:222:26
. . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlLocal OnStack Used uintptr tc(1) # map_faststr.go:80:27 stubs.go:221:2
. . . . . LITERAL-0 uintptr tc(1) # map_faststr.go:80:27 stubs.go:222:28
. GOTO runtime..i13 tc(1) # map_faststr.go:80:27
. LABEL runtime..i13 # map_faststr.go:80:27
. AS-init
. . AS tc(1) # map_faststr.go:80:18
. . . NAME-runtime..autotmp_114 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used uintptr tc(1) # map_faststr.go:80:18
. . . CONV uintptr tc(1) # map_faststr.go:80:59
. . . . DOTPTR runtime.hash0 uint32 tc(1) # map_faststr.go:80:59
. . . . . NAME-runtime.h esc(no) Class:PPARAM Offset:0 OnStack Used PTR-*hmap tc(1) # map_faststr.go:13:37
. AS Def tc(1) # map_faststr.go:80:7
. . NAME-runtime.hash esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:80:2
. . CALLFUNC Walked uintptr tc(1) # map_faststr.go:80:18
. . . DOTPTR runtime.Hasher FUNC-func(unsafe.Pointer, uintptr) uintptr tc(1) # map_faststr.go:80:11
. . . . NAME-runtime.t esc(no) Class:PPARAM Offset:0 OnStack Used PTR-*abi.MapType tc(1) # map_faststr.go:13:25
. . CALLFUNC-Args
. . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:80:27 stubs.go:220:33
. . . NAME-runtime..autotmp_114 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used uintptr tc(1) # map_faststr.go:80:18
. DCL # map_faststr.go:81:2
. . NAME-runtime.m esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:81:2
. DCL # map_faststr.go:81:17
. . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uint8 tc(1) # map_faststr.go:81:17 map.go:191:17
. BLOCK # map_faststr.go:81:17
. BLOCK-List
. . AS tc(1) # map_faststr.go:81:17
. . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uint8 tc(1) # map_faststr.go:81:17 map.go:191:17
. . . DOTPTR runtime.B uint8 tc(1) # map_faststr.go:81:19
. . . . NAME-runtime.h esc(no) Class:PPARAM Offset:0 OnStack Used PTR-*hmap tc(1) # map_faststr.go:13:37
. INLMARK Index:5619 # +map_faststr.go:81:17
. DCL tc(1) # map_faststr.go:81:17
. . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:81:17 map.go:191:26
. DCL # map_faststr.go:81:17 map.go:192:20
. . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uint8 tc(1) # map_faststr.go:81:17 map.go:192:20 map.go:185:18
. BLOCK # map_faststr.go:81:17 map.go:192:20
. BLOCK-List
. . AS tc(1) # map_faststr.go:81:17 map.go:192:20
. . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uint8 tc(1) # map_faststr.go:81:17 map.go:192:20 map.go:185:18
. . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uint8 tc(1) # map_faststr.go:81:17 map.go:191:17
. INLMARK Index:5631 # +map_faststr.go:81:17 map.go:192:20
. DCL tc(1) # map_faststr.go:81:17 map.go:192:20
. . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:81:17 map.go:192:20 map.go:185:27
. BLOCK # map_faststr.go:81:17 map.go:192:20
. BLOCK-List
. . AS tc(1) # map_faststr.go:81:17 map.go:192:20
. . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:81:17 map.go:192:20 map.go:185:27
. . . LSH uintptr tc(1) # map_faststr.go:81:17 map.go:192:20 map.go:187:20
. . . . LITERAL-1 uintptr tc(1) # map_faststr.go:81:17 map.go:192:20 map.go:187:16
. . . . AND uint8 tc(1) # map_faststr.go:81:17 map.go:192:20 map.go:187:26
. . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uint8 tc(1) # map_faststr.go:81:17 map.go:192:20 map.go:185:18
. . . . . LITERAL-63 uint8 tc(1) # map_faststr.go:81:17 map.go:192:20 map.go:187:46
. GOTO runtime..i26 tc(1) # map_faststr.go:81:17 map.go:192:20
. LABEL runtime..i26 # map_faststr.go:81:17 map.go:192:20
. BLOCK # map_faststr.go:81:17
. BLOCK-List
. . AS tc(1) # map_faststr.go:81:17
. . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:81:17 map.go:191:26
. . . SUB uintptr tc(1) # map_faststr.go:81:17 map.go:192:24
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:81:17 map.go:192:20 map.go:185:27
. . . . LITERAL-1 uintptr tc(1) # map_faststr.go:81:17 map.go:192:26
. GOTO runtime..i14 tc(1) # map_faststr.go:81:17
. LABEL runtime..i14 # map_faststr.go:81:17
. AS Def tc(1) # map_faststr.go:81:4
. . NAME-runtime.m esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:81:2
. . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:81:17 map.go:191:26
. DCL # map_faststr.go:82:2
. . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:82:2
. DCL # map_faststr.go:82:18
. . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:82:18 stubs.go:17:10
. DCL # map_faststr.go:82:18
. . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:82:18 stubs.go:17:28
. BLOCK # map_faststr.go:82:18
. BLOCK-List
. . AS tc(1) # map_faststr.go:82:18
. . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:82:18 stubs.go:17:10
. . . DOTPTR runtime.buckets UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:82:20
. . . . NAME-runtime.h esc(no) Class:PPARAM Offset:0 OnStack Used PTR-*hmap tc(1) # map_faststr.go:13:37
. . AS tc(1) # map_faststr.go:82:18
. . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:82:18 stubs.go:17:28
. . . MUL uintptr tc(1) # map_faststr.go:82:38
. . . . AND uintptr tc(1) # map_faststr.go:82:35
. . . . . NAME-runtime.hash esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:80:2
. . . . . NAME-runtime.m esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:81:2
. . . . CONV uintptr tc(1) # map_faststr.go:82:48
. . . . . DOTPTR runtime.BucketSize uint16 tc(1) # map_faststr.go:82:48
. . . . . . NAME-runtime.t esc(no) Class:PPARAM Offset:0 OnStack Used PTR-*abi.MapType tc(1) # map_faststr.go:13:25
. INLMARK Index:5620 # +map_faststr.go:82:18
. DCL tc(1) # map_faststr.go:82:18
. . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:82:18 stubs.go:17:39
. BLOCK # map_faststr.go:82:18
. BLOCK-List
. . AS tc(1) # map_faststr.go:82:18
. . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:82:18 stubs.go:17:39
. . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:82:18 stubs.go:18:35
. . . . ADD uintptr tc(1) # map_faststr.go:82:18 stubs.go:18:35
. . . . . CONVNOP uintptr tc(1) # map_faststr.go:82:18 stubs.go:18:32
. . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:82:18 stubs.go:17:10
. . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:82:18 stubs.go:17:28
. GOTO runtime..i15 tc(1) # map_faststr.go:82:18
. LABEL runtime..i15 # map_faststr.go:82:18
. AS Def tc(1) # map_faststr.go:82:4
. . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:82:2
. . CONVNOP PTR-*bmap tc(1) # map_faststr.go:82:18
. . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:82:18 stubs.go:17:39
. DCL # map_faststr.go:83:5
. . NAME-runtime.c esc(no) Class:PAUTO Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:83:5
. AS Def tc(1) # map_faststr.go:83:7
. . NAME-runtime.c esc(no) Class:PAUTO Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:83:5
. . DOTPTR runtime.oldbuckets UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:83:11
. . . NAME-runtime.h esc(no) Class:PPARAM Offset:0 OnStack Used PTR-*hmap tc(1) # map_faststr.go:13:37
. IF tc(1) # map_faststr.go:83:2
. IF-Cond
. . NE bool tc(1) # map_faststr.go:83:26
. . . NAME-runtime.c esc(no) Class:PAUTO Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:83:5
. . . NIL UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:83:29
. IF-Body
. . IF-init
. . . DCL # map_faststr.go:84:21
. . . . NAME-runtime.h esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*hmap tc(1) # map_faststr.go:84:21 map.go:1127:7
. . . BLOCK # map_faststr.go:84:21
. . . BLOCK-List
. . . . AS tc(1) # map_faststr.go:84:21
. . . . . NAME-runtime.h esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*hmap tc(1) # map_faststr.go:84:21 map.go:1127:7
. . . . . NAME-runtime.h esc(no) Class:PPARAM Offset:0 OnStack Used PTR-*hmap tc(1) # map_faststr.go:13:37
. . . INLMARK Index:5621 # +map_faststr.go:84:21
. . . DCL tc(1) # map_faststr.go:84:21
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used bool tc(1) # map_faststr.go:84:21 map.go:1127:31
. . . BLOCK # map_faststr.go:84:21
. . . BLOCK-List
. . . . AS tc(1) # map_faststr.go:84:21
. . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used bool tc(1) # map_faststr.go:84:21 map.go:1127:31
. . . . . NE bool tc(1) # map_faststr.go:84:21 map.go:1128:30
. . . . . . AND uint8 tc(1) # map_faststr.go:84:21 map.go:1128:16
. . . . . . . DOTPTR runtime.flags uint8 tc(1) # map_faststr.go:84:21 map.go:1128:10
. . . . . . . . NAME-runtime.h esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*hmap tc(1) # map_faststr.go:84:21 map.go:1127:7
. . . . . . . LITERAL-8 uint8 tc(1) # map_faststr.go:84:21 map.go:1128:17
. . . . . . LITERAL-0 uint8 tc(1) # map_faststr.go:84:21 map.go:1128:33
. . . GOTO runtime..i16 tc(1) # map_faststr.go:84:21
. . . LABEL runtime..i16 # map_faststr.go:84:21
. . IF tc(1) # map_faststr.go:84:3
. . IF-Cond
. . . NOT bool tc(1) # map_faststr.go:84:6
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used bool tc(1) # map_faststr.go:84:21 map.go:1127:31
. . IF-Body
. . . AS tc(1) # map_faststr.go:86:6
. . . . NAME-runtime.m esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:81:2
. . . . RSH uintptr tc(1) # map_faststr.go:86:6
. . . . . NAME-runtime.m esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:81:2
. . . . . LITERAL-1 uint tc(1) # map_faststr.go:86:10
. . DCL # map_faststr.go:88:3
. . . NAME-runtime.oldb esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:88:3
. . DCL # map_faststr.go:88:22
. . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:88:22 stubs.go:17:10
. . DCL # map_faststr.go:88:22
. . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:88:22 stubs.go:17:28
. . BLOCK # map_faststr.go:88:22
. . BLOCK-List
. . . AS tc(1) # map_faststr.go:88:22
. . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:88:22 stubs.go:17:10
. . . . NAME-runtime.c esc(no) Class:PAUTO Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:83:5
. . . AS tc(1) # map_faststr.go:88:22
. . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:88:22 stubs.go:17:28
. . . . MUL uintptr tc(1) # map_faststr.go:88:34
. . . . . AND uintptr tc(1) # map_faststr.go:88:31
. . . . . . NAME-runtime.hash esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:80:2
. . . . . . NAME-runtime.m esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:81:2
. . . . . CONV uintptr tc(1) # map_faststr.go:88:44
. . . . . . DOTPTR runtime.BucketSize uint16 tc(1) # map_faststr.go:88:44
. . . . . . . NAME-runtime.t esc(no) Class:PPARAM Offset:0 OnStack Used PTR-*abi.MapType tc(1) # map_faststr.go:13:25
. . INLMARK Index:5622 # +map_faststr.go:88:22
. . DCL tc(1) # map_faststr.go:88:22
. . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:88:22 stubs.go:17:39
. . BLOCK # map_faststr.go:88:22
. . BLOCK-List
. . . AS tc(1) # map_faststr.go:88:22
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:88:22 stubs.go:17:39
. . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:88:22 stubs.go:18:35
. . . . . ADD uintptr tc(1) # map_faststr.go:88:22 stubs.go:18:35
. . . . . . CONVNOP uintptr tc(1) # map_faststr.go:88:22 stubs.go:18:32
. . . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:88:22 stubs.go:17:10
. . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:88:22 stubs.go:17:28
. . GOTO runtime..i17 tc(1) # map_faststr.go:88:22
. . LABEL runtime..i17 # map_faststr.go:88:22
. . AS Def tc(1) # map_faststr.go:88:8
. . . NAME-runtime.oldb esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:88:3
. . . CONVNOP PTR-*bmap tc(1) # map_faststr.go:88:22
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:88:22 stubs.go:17:39
. . IF-init
. . . DCL # map_faststr.go:89:16
. . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*bmap tc(1) # map_faststr.go:89:16 map.go:204:16
. . . BLOCK # map_faststr.go:89:16
. . . BLOCK-List
. . . . AS tc(1) # map_faststr.go:89:16
. . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*bmap tc(1) # map_faststr.go:89:16 map.go:204:16
. . . . . NAME-runtime.oldb esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:88:3
. . . INLMARK Index:5623 # +map_faststr.go:89:16
. . . DCL # map_faststr.go:89:16 map.go:205:2
. . . . NAME-runtime.h esc(no) Class:PAUTO Offset:0 InlLocal OnStack Used uint8 tc(1) # map_faststr.go:89:16 map.go:205:2
. . . AS Def tc(1) # map_faststr.go:89:16 map.go:205:4
. . . . NAME-runtime.h esc(no) Class:PAUTO Offset:0 InlLocal OnStack Used uint8 tc(1) # map_faststr.go:89:16 map.go:205:2
. . . . INDEX Bounded uint8 tc(1) # map_faststr.go:89:16 map.go:205:16
. . . . . DOTPTR runtime.tophash ARRAY-[8]uint8 tc(1) # map_faststr.go:89:16 map.go:205:8
. . . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*bmap tc(1) # map_faststr.go:89:16 map.go:204:16
. . . . . LITERAL-0 int tc(1) # map_faststr.go:89:16 map.go:205:17
. . . DCL tc(1) # map_faststr.go:89:16
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used bool tc(1) # map_faststr.go:89:16 map.go:204:25
. . . AS tc(1) # map_faststr.go:89:16 map.go:206:22
. . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . GT bool tc(1) # map_faststr.go:89:16 map.go:206:11
. . . . . NAME-runtime.h esc(no) Class:PAUTO Offset:0 InlLocal OnStack Used uint8 tc(1) # map_faststr.go:89:16 map.go:205:2
. . . . . LITERAL-1 uint8 tc(1) # map_faststr.go:89:16 map.go:206:13
. . . IF # map_faststr.go:89:16 map.go:206:22
. . . IF-Cond
. . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . IF-Body
. . . . AS tc(1) # map_faststr.go:89:16 map.go:206:22
. . . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . . LT bool tc(1) # map_faststr.go:89:16 map.go:206:27
. . . . . . NAME-runtime.h esc(no) Class:PAUTO Offset:0 InlLocal OnStack Used uint8 tc(1) # map_faststr.go:89:16 map.go:205:2
. . . . . . LITERAL-5 uint8 tc(1) # map_faststr.go:89:16 map.go:206:29
. . . BLOCK # map_faststr.go:89:16
. . . BLOCK-List
. . . . AS tc(1) # map_faststr.go:89:16
. . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used bool tc(1) # map_faststr.go:89:16 map.go:204:25
. . . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . GOTO runtime..i18 tc(1) # map_faststr.go:89:16
. . . LABEL runtime..i18 # map_faststr.go:89:16
. . IF tc(1) # map_faststr.go:89:3
. . IF-Cond
. . . NOT bool tc(1) # map_faststr.go:89:6
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used bool tc(1) # map_faststr.go:89:16 map.go:204:25
. . IF-Body
. . . AS tc(1) # map_faststr.go:90:6
. . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:82:2
. . . . NAME-runtime.oldb esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:88:3
. DCL # map_faststr.go:93:2
. . NAME-runtime.top esc(no) Class:PAUTO Offset:0 OnStack Used uint8 tc(1) # map_faststr.go:93:2
. DCL # map_faststr.go:93:16
. . NAME-runtime.hash esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:93:16 map.go:196:14
. BLOCK # map_faststr.go:93:16
. BLOCK-List
. . AS tc(1) # map_faststr.go:93:16
. . . NAME-runtime.hash esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:93:16 map.go:196:14
. . . NAME-runtime.hash esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:80:2
. INLMARK Index:5624 # +map_faststr.go:93:16
. DCL # map_faststr.go:93:16 map.go:197:2
. . NAME-runtime.top esc(no) Class:PAUTO Offset:0 InlLocal OnStack Used uint8 tc(1) # map_faststr.go:93:16 map.go:197:2
. AS Def tc(1) # map_faststr.go:93:16 map.go:197:6
. . NAME-runtime.top esc(no) Class:PAUTO Offset:0 InlLocal OnStack Used uint8 tc(1) # map_faststr.go:93:16 map.go:197:2
. . CONV uint8 tc(1) # map_faststr.go:93:16 map.go:197:20
. . . RSH uintptr tc(1) # map_faststr.go:93:16 map.go:197:20
. . . . NAME-runtime.hash esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:93:16 map.go:196:14
. . . . LITERAL-56 uint tc(1) # map_faststr.go:93:16 map.go:197:41
. IF tc(1) # map_faststr.go:93:16 map.go:198:2
. IF-Cond
. . LT bool tc(1) # map_faststr.go:93:16 map.go:198:9
. . . NAME-runtime.top esc(no) Class:PAUTO Offset:0 InlLocal OnStack Used uint8 tc(1) # map_faststr.go:93:16 map.go:197:2
. . . LITERAL-5 uint8 tc(1) # map_faststr.go:93:16 map.go:198:11
. IF-Body
. . AS tc(1) # map_faststr.go:93:16 map.go:199:7
. . . NAME-runtime.top esc(no) Class:PAUTO Offset:0 InlLocal OnStack Used uint8 tc(1) # map_faststr.go:93:16 map.go:197:2
. . . ADD uint8 tc(1) # map_faststr.go:93:16 map.go:199:7
. . . . NAME-runtime.top esc(no) Class:PAUTO Offset:0 InlLocal OnStack Used uint8 tc(1) # map_faststr.go:93:16 map.go:197:2
. . . . LITERAL-5 uint8 tc(1) # map_faststr.go:93:16 map.go:199:10
. DCL tc(1) # map_faststr.go:93:16
. . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uint8 tc(1) # map_faststr.go:93:16 map.go:196:28
. BLOCK # map_faststr.go:93:16
. BLOCK-List
. . AS tc(1) # map_faststr.go:93:16
. . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uint8 tc(1) # map_faststr.go:93:16 map.go:196:28
. . . NAME-runtime.top esc(no) Class:PAUTO Offset:0 InlLocal OnStack Used uint8 tc(1) # map_faststr.go:93:16 map.go:197:2
. GOTO runtime..i19 tc(1) # map_faststr.go:93:16
. LABEL runtime..i19 # map_faststr.go:93:16
. AS Def tc(1) # map_faststr.go:93:6
. . NAME-runtime.top esc(no) Class:PAUTO Offset:0 OnStack Used uint8 tc(1) # map_faststr.go:93:2
. . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uint8 tc(1) # map_faststr.go:93:16 map.go:196:28
. FOR tc(1) # map_faststr.go:94:2
. FOR-Cond
. . NE bool tc(1) # map_faststr.go:94:10
. . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:82:2
. . . NIL PTR-*bmap tc(1) # map_faststr.go:94:13
. FOR-Post
. . BLOCK # map_faststr.go:94:32
. . BLOCK-List
. . . DCL # map_faststr.go:94:32
. . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*bmap tc(1) # map_faststr.go:94:32 map.go:209:7
. . . DCL # map_faststr.go:94:32
. . . . NAME-runtime.t esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*abi.MapType tc(1) # map_faststr.go:94:32 map.go:209:25
. . . BLOCK # map_faststr.go:94:32
. . . BLOCK-List
. . . . AS tc(1) # map_faststr.go:94:32
. . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*bmap tc(1) # map_faststr.go:94:32 map.go:209:7
. . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:82:2
. . . . AS tc(1) # map_faststr.go:94:32
. . . . . NAME-runtime.t esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*abi.MapType tc(1) # map_faststr.go:94:32 map.go:209:25
. . . . . NAME-runtime.t esc(no) Class:PPARAM Offset:0 OnStack Used PTR-*abi.MapType tc(1) # map_faststr.go:13:25
. . . INLMARK Index:5625 # +map_faststr.go:94:32
. . . DCL tc(1) # map_faststr.go:94:32
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*bmap tc(1) # map_faststr.go:94:32 map.go:209:37
. . . DCL # map_faststr.go:94:32 map.go:210:22
. . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:94:32 map.go:210:22 stubs.go:17:10
. . . DCL # map_faststr.go:94:32 map.go:210:22
. . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:94:32 map.go:210:22 stubs.go:17:28
. . . BLOCK # map_faststr.go:94:32 map.go:210:22
. . . BLOCK-List
. . . . AS tc(1) # map_faststr.go:94:32 map.go:210:22
. . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:94:32 map.go:210:22 stubs.go:17:10
. . . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:94:32 map.go:210:38
. . . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*bmap tc(1) # map_faststr.go:94:32 map.go:209:7
. . . . AS tc(1) # map_faststr.go:94:32 map.go:210:22
. . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:94:32 map.go:210:22 stubs.go:17:28
. . . . . SUB uintptr tc(1) # map_faststr.go:94:32 map.go:210:63
. . . . . . CONV uintptr tc(1) # map_faststr.go:94:32 map.go:210:51
. . . . . . . DOTPTR runtime.BucketSize uint16 tc(1) # map_faststr.go:94:32 map.go:210:51
. . . . . . . . NAME-runtime.t esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*abi.MapType tc(1) # map_faststr.go:94:32 map.go:209:25
. . . . . . LITERAL-8 uintptr tc(1) # map_faststr.go:94:32 map.go:210:70
. . . INLMARK Index:5632 # +map_faststr.go:94:32 map.go:210:22
. . . DCL tc(1) # map_faststr.go:94:32 map.go:210:22
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:94:32 map.go:210:22 stubs.go:17:39
. . . BLOCK # map_faststr.go:94:32 map.go:210:22
. . . BLOCK-List
. . . . AS tc(1) # map_faststr.go:94:32 map.go:210:22
. . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:94:32 map.go:210:22 stubs.go:17:39
. . . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:94:32 map.go:210:22 stubs.go:18:35
. . . . . . ADD uintptr tc(1) # map_faststr.go:94:32 map.go:210:22 stubs.go:18:35
. . . . . . . CONVNOP uintptr tc(1) # map_faststr.go:94:32 map.go:210:22 stubs.go:18:32
. . . . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:94:32 map.go:210:22 stubs.go:17:10
. . . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:94:32 map.go:210:22 stubs.go:17:28
. . . GOTO runtime..i27 tc(1) # map_faststr.go:94:32 map.go:210:22
. . . LABEL runtime..i27 # map_faststr.go:94:32 map.go:210:22
. . . BLOCK # map_faststr.go:94:32
. . . BLOCK-List
. . . . AS tc(1) # map_faststr.go:94:32
. . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*bmap tc(1) # map_faststr.go:94:32 map.go:209:37
. . . . . DEREF PTR-*bmap tc(1) # map_faststr.go:94:32 map.go:210:9
. . . . . . CONVNOP PTR-**bmap tc(1) # map_faststr.go:94:32 map.go:210:22
. . . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:94:32 map.go:210:22 stubs.go:17:39
. . . GOTO runtime..i20 tc(1) # map_faststr.go:94:32
. . . LABEL runtime..i20 # map_faststr.go:94:32
. . . AS tc(1) # map_faststr.go:94:20
. . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:82:2
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*bmap tc(1) # map_faststr.go:94:32 map.go:209:37
. FOR-Body
. . DCL # map_faststr.go:95:7
. . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:95:7
. . DCL # map_faststr.go:95:10
. . . NAME-runtime.kptr esc(no) Class:PAUTO Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:10
. . DCL # map_faststr.go:95:36
. . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*bmap tc(1) # map_faststr.go:95:36 map.go:217:7
. . BLOCK # map_faststr.go:95:36
. . BLOCK-List
. . . AS tc(1) # map_faststr.go:95:36
. . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*bmap tc(1) # map_faststr.go:95:36 map.go:217:7
. . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:82:2
. . INLMARK Index:5626 # +map_faststr.go:95:36
. . DCL tc(1) # map_faststr.go:95:36
. . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:36 map.go:217:23
. . DCL # map_faststr.go:95:36 map.go:218:12
. . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:36 map.go:218:12 stubs.go:17:10
. . DCL # map_faststr.go:95:36 map.go:218:12
. . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:95:36 map.go:218:12 stubs.go:17:28
. . BLOCK # map_faststr.go:95:36 map.go:218:12
. . BLOCK-List
. . . AS tc(1) # map_faststr.go:95:36 map.go:218:12
. . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:36 map.go:218:12 stubs.go:17:10
. . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:36 map.go:218:28
. . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used PTR-*bmap tc(1) # map_faststr.go:95:36 map.go:217:7
. . . AS tc(1) # map_faststr.go:95:36 map.go:218:12
. . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:95:36 map.go:218:12 stubs.go:17:28
. . . . LITERAL-8 uintptr tc(1) # map_faststr.go:95:36 map.go:218:32
. . INLMARK Index:5633 # +map_faststr.go:95:36 map.go:218:12
. . DCL tc(1) # map_faststr.go:95:36 map.go:218:12
. . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:36 map.go:218:12 stubs.go:17:39
. . BLOCK # map_faststr.go:95:36 map.go:218:12
. . BLOCK-List
. . . AS tc(1) # map_faststr.go:95:36 map.go:218:12
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:36 map.go:218:12 stubs.go:17:39
. . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:36 map.go:218:12 stubs.go:18:35
. . . . . ADD uintptr tc(1) # map_faststr.go:95:36 map.go:218:12 stubs.go:18:35
. . . . . . CONVNOP uintptr tc(1) # map_faststr.go:95:36 map.go:218:12 stubs.go:18:32
. . . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:36 map.go:218:12 stubs.go:17:10
. . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:95:36 map.go:218:12 stubs.go:17:28
. . GOTO runtime..i28 tc(1) # map_faststr.go:95:36 map.go:218:12
. . LABEL runtime..i28 # map_faststr.go:95:36 map.go:218:12
. . BLOCK # map_faststr.go:95:36
. . BLOCK-List
. . . AS tc(1) # map_faststr.go:95:36
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:36 map.go:217:23
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:36 map.go:218:12 stubs.go:17:39
. . GOTO runtime..i21 tc(1) # map_faststr.go:95:36
. . LABEL runtime..i21 # map_faststr.go:95:36
. . BLOCK # map_faststr.go:95:15
. . BLOCK-List
. . . AS tc(1) # map_faststr.go:95:15
. . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:95:7
. . . . LITERAL-0 uintptr tc(1) # map_faststr.go:95:25
. . . AS tc(1) # map_faststr.go:95:15
. . . . NAME-runtime.kptr esc(no) Class:PAUTO Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:10
. . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:36 map.go:217:23
. . FOR tc(1) # map_faststr.go:95:3
. . FOR-Cond
. . . LT bool tc(1) # map_faststr.go:95:42
. . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:95:7
. . . . LITERAL-8 uintptr tc(1) # map_faststr.go:95:44
. . FOR-Post
. . . BLOCK # map_faststr.go:95:73
. . . BLOCK-List
. . . . DCL # map_faststr.go:95:73
. . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:73 stubs.go:17:10
. . . . DCL # map_faststr.go:95:73
. . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:95:73 stubs.go:17:28
. . . . BLOCK # map_faststr.go:95:73
. . . . BLOCK-List
. . . . . AS tc(1) # map_faststr.go:95:73
. . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:73 stubs.go:17:10
. . . . . . NAME-runtime.kptr esc(no) Class:PAUTO Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:10
. . . . . AS tc(1) # map_faststr.go:95:73
. . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:95:73 stubs.go:17:28
. . . . . . LITERAL-16 uintptr tc(1) # map_faststr.go:95:81
. . . . INLMARK Index:5627 # +map_faststr.go:95:73
. . . . DCL tc(1) # map_faststr.go:95:73
. . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:73 stubs.go:17:39
. . . . BLOCK # map_faststr.go:95:73
. . . . BLOCK-List
. . . . . AS tc(1) # map_faststr.go:95:73
. . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:73 stubs.go:17:39
. . . . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:73 stubs.go:18:35
. . . . . . . ADD uintptr tc(1) # map_faststr.go:95:73 stubs.go:18:35
. . . . . . . . CONVNOP uintptr tc(1) # map_faststr.go:95:73 stubs.go:18:32
. . . . . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:73 stubs.go:17:10
. . . . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:95:73 stubs.go:17:28
. . . . GOTO runtime..i22 tc(1) # map_faststr.go:95:73
. . . . LABEL runtime..i22 # map_faststr.go:95:73
. . . . BLOCK # map_faststr.go:95:63
. . . . BLOCK-List
. . . . . AS tc(1) # map_faststr.go:95:63
. . . . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:95:7
. . . . . . ADD uintptr tc(1) # map_faststr.go:95:66
. . . . . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:95:7
. . . . . . . LITERAL-1 uintptr tc(1) # map_faststr.go:95:67
. . . . . AS tc(1) # map_faststr.go:95:63
. . . . . . NAME-runtime.kptr esc(no) Class:PAUTO Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:10
. . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:73 stubs.go:17:39
. . FOR-Body
. . . DCL # map_faststr.go:96:4
. . . . NAME-runtime.k esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:96:4
. . . AS Def tc(1) # map_faststr.go:96:6
. . . . NAME-runtime.k esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:96:4
. . . . CONVNOP PTR-*stringStruct tc(1) # map_faststr.go:96:25
. . . . . NAME-runtime.kptr esc(no) Class:PAUTO Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:95:10
. . . IF-init
. . . . AS tc(1) # map_faststr.go:97:24
. . . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . . NE bool tc(1) # map_faststr.go:97:13
. . . . . . DOTPTR runtime.len int tc(1) # map_faststr.go:97:8
. . . . . . . NAME-runtime.k esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:96:4
. . . . . . DOTPTR runtime.len int tc(1) # map_faststr.go:97:19
. . . . . . . NAME-runtime.key esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:2
. . . . IF # map_faststr.go:97:24
. . . . IF-Cond
. . . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . IF-Else
. . . . . AS tc(1) # map_faststr.go:97:24
. . . . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . . . NE bool tc(1) # map_faststr.go:97:40
. . . . . . . INDEX uint8 tc(1) # map_faststr.go:97:36
. . . . . . . . DOTPTR runtime.tophash ARRAY-[8]uint8 tc(1) # map_faststr.go:97:28
. . . . . . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:82:2
. . . . . . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:95:7
. . . . . . . NAME-runtime.top esc(no) Class:PAUTO Offset:0 OnStack Used uint8 tc(1) # map_faststr.go:93:2
. . . IF tc(1) # map_faststr.go:97:4
. . . IF-Cond
. . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . IF-Body
. . . . CONTINUE tc(1) # map_faststr.go:98:5
. . . IF-init
. . . . AS tc(1) # map_faststr.go:100:24
. . . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . . EQ bool tc(1) # map_faststr.go:100:13
. . . . . . DOTPTR runtime.str UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:100:8
. . . . . . . NAME-runtime.k esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:96:4
. . . . . . DOTPTR runtime.str UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:100:19
. . . . . . . NAME-runtime.key esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:2
. . . . IF # map_faststr.go:100:24
. . . . IF-Cond
. . . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . IF-Else
. . . . . AS-init
. . . . . . AS tc(1) # map_faststr.go:100:35
. . . . . . . NAME-runtime..autotmp_115 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:100:35
. . . . . . . DOTPTR runtime.str UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:100:37
. . . . . . . . NAME-runtime.k esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:96:4
. . . . . . AS tc(1) # map_faststr.go:100:35
. . . . . . . NAME-runtime..autotmp_116 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:100:35
. . . . . . . DOTPTR runtime.str UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:100:46
. . . . . . . . NAME-runtime.key esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:2
. . . . . . AS tc(1) # map_faststr.go:100:35
. . . . . . . NAME-runtime..autotmp_117 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used uintptr tc(1) # map_faststr.go:100:35
. . . . . . . CONV uintptr tc(1) # map_faststr.go:100:63
. . . . . . . . DOTPTR runtime.len int tc(1) # map_faststr.go:100:63
. . . . . . . . . NAME-runtime.key esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*stringStruct tc(1) # map_faststr.go:24:2
. . . . . AS tc(1) # map_faststr.go:100:35
. . . . . . NAME-runtime..autotmp_103 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:38:36
. . . . . . CALLFUNC Walked bool tc(1) # map_faststr.go:100:35
. . . . . . . NAME-runtime.memequal Class:PFUNC Offset:0 Used FUNC-func(unsafe.Pointer, unsafe.Pointer, uintptr) bool tc(1) # stubs.go:211:6
. . . . . . CALLFUNC-Args
. . . . . . . NAME-runtime..autotmp_115 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:100:35
. . . . . . . NAME-runtime..autotmp_116 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:100:35
. . . . . . . NAME-runtime..autotmp_117 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used uintptr tc(1) # map_faststr.go:100:35
. . . . . AS tc(1) # map_faststr.go:100:24
. . . . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . . . . NAME-runtime..autotmp_103 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:38:36
. . . IF tc(1) # map_faststr.go:100:4
. . . IF-Cond
. . . . NAME-runtime..autotmp_102 esc(N) Class:PAUTO Offset:0 AutoTemp OnStack Used bool tc(1) # map_faststr.go:18:14
. . . IF-Body
. . . . DCL # map_faststr.go:101:15
. . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:101:15 stubs.go:17:10
. . . . DCL # map_faststr.go:101:15
. . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:101:15 stubs.go:17:28
. . . . BLOCK # map_faststr.go:101:15
. . . . BLOCK-List
. . . . . AS tc(1) # map_faststr.go:101:15
. . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:101:15 stubs.go:17:10
. . . . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:101:31
. . . . . . . NAME-runtime.b esc(no) Class:PAUTO Offset:0 OnStack Used PTR-*bmap tc(1) # map_faststr.go:82:2
. . . . . AS tc(1) # map_faststr.go:101:15
. . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:101:15 stubs.go:17:28
. . . . . . ADD uintptr tc(1) # map_faststr.go:101:72
. . . . . . . LITERAL-136 uintptr tc(1) # map_faststr.go:101:45
. . . . . . . MUL uintptr tc(1) # map_faststr.go:101:74
. . . . . . . . NAME-runtime.i esc(no) Class:PAUTO Offset:0 OnStack Used uintptr tc(1) # map_faststr.go:95:7
. . . . . . . . CONV uintptr tc(1) # map_faststr.go:101:84
. . . . . . . . . DOTPTR runtime.ValueSize uint8 tc(1) # map_faststr.go:101:84
. . . . . . . . . . NAME-runtime.t esc(no) Class:PPARAM Offset:0 OnStack Used PTR-*abi.MapType tc(1) # map_faststr.go:13:25
. . . . INLMARK Index:5628 # +map_faststr.go:101:15
. . . . DCL tc(1) # map_faststr.go:101:15
. . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:101:15 stubs.go:17:39
. . . . BLOCK # map_faststr.go:101:15
. . . . BLOCK-List
. . . . . AS tc(1) # map_faststr.go:101:15
. . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:101:15 stubs.go:17:39
. . . . . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:101:15 stubs.go:18:35
. . . . . . . ADD uintptr tc(1) # map_faststr.go:101:15 stubs.go:18:35
. . . . . . . . CONVNOP uintptr tc(1) # map_faststr.go:101:15 stubs.go:18:32
. . . . . . . . . NAME-runtime.p esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:101:15 stubs.go:17:10
. . . . . . . . NAME-runtime.x esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used uintptr tc(1) # map_faststr.go:101:15 stubs.go:17:28
. . . . GOTO runtime..i23 tc(1) # map_faststr.go:101:15
. . . . LABEL runtime..i23 # map_faststr.go:101:15
. . . . RETURN tc(1) # map_faststr.go:101:5
. . . . RETURN-Results
. . . . . AS tc(1) # map_faststr.go:101:5
. . . . . . NAME-runtime.~r0 esc(no) Class:PPARAMOUT Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:13:57
. . . . . . NAME-runtime.~R0 esc(no) Class:PAUTO Offset:0 InlFormal OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:101:15 stubs.go:17:39
. RETURN tc(1) # map_faststr.go:105:2
. RETURN-Results
. . AS tc(1) # map_faststr.go:105:2
. . . NAME-runtime.~r0 esc(no) Class:PPARAMOUT Offset:0 OnStack Used UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:13:57
. . . CONVNOP UNSAFEPTR-unsafe.Pointer tc(1) # map_faststr.go:105:24
. . . . ADDR PTR-*byte tc(1) # map_faststr.go:105:24
. . . . . INDEX Bounded byte tc(1) # map_faststr.go:105:32
. . . . . . NAME-runtime.zeroVal Class:PEXTERN Offset:0 Addrtaken Used ARRAY-[1024]byte tc(1) # map.go:1440:5
. . . . . . LITERAL-0 int tc(1) # map_faststr.go:105:33
buildssa-exit
 

before insert phis

  • b1:
    • v1 (?) = InitMem <mem>
    • v2 (?) = SP <uintptr>
    • v3 (?) = SB <uintptr>
    • v4 (?) = LocalAddr <**abi.MapType> {t} v2 v1
    • v5 (?) = LocalAddr <**hmap> {h} v2 v1
    • v6 (?) = LocalAddr <*string> {ky} v2 v1 (sp[*string])
    • v7 (?) = LocalAddr <*unsafe.Pointer> {~r0} v2 v1
    • v8 (13) = Arg <*abi.MapType> {t} (t[*abi.MapType])
    • v9 (13) = Arg <*hmap> {h} (h[*hmap])
    • v10 (13) = Arg <string> {ky}
    • v11 (13) = Store <mem> {string} v6 v10 v1
    • v12 (?) = ConstNil <unsafe.Pointer>
    • v13 (?) = ConstNil <*hmap>
    • v14 (18) = EqPtr <bool> v9 v13
    • v20 (?) = Const64 <int> [0]
    • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
    • v24 (?) = Const64 <int> [1024]
    • v34 (?) = Const8 <uint8> [4]
    • v36 (?) = Const8 <uint8> [0]
    • v38 (?) = ConstString <string> {"concurrent map read and map write"}
    • v63 (?) = Const64 <int> [32]
    • v69 (?) = Const64 <uintptr> [8] (x[uintptr], keymaybe[uintptr], x[uintptr], x[uintptr])
    • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
    • v95 (?) = Const64 <int> [8]
    • v103 (?) = Const8 <uint8> [1]
    • v148 (?) = Const64 <uintptr> [136]
    • v166 (?) = Const64 <uintptr> [16] (x[uintptr], x[uintptr], x[uintptr])
    • v173 (?) = Const64 <uintptr> [1]
    • v176 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
    • v271 (?) = Const64 <int> [4]
    • v277 (?) = Const64 <int> [1]
    • v282 (?) = Const64 <uint> [8]
    • v286 (?) = Const64 <int> [2]
    • v291 (?) = Const64 <uint> [16]
    • v295 (?) = Const64 <int> [3]
    • v300 (?) = Const64 <uint> [24]
    • v339 (?) = Const64 <uintptr> [4]
    • v435 (?) = Const64 <uintptr> [2]
    • v479 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
    • v510 (?) = Const8 <uint8> [63]
    • v547 (?) = Const8 <uint8> [8]
    • v552 (?) = Const64 <uint> [1]
    • v579 (?) = Const8 <uint8> [5]
    • v587 (?) = Const64 <uint> [56]
    • v596 (?) = ConstNil <*bmap>
    • v709 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
  • If v14b2 b3 (18)
  • b2: ← b1 b3
    • v22 (18) = FwdRef <bool> {{[] .autotmp_102}}
  • If v22b5 b4 (18)
  • b3: ← b1
    • v15 (18) = FwdRef <*hmap> {{[] h}} (h[*hmap])
    • v16 (18) = FwdRef <mem> {{[] mem}}
    • v17 (18) = NilCheck <void> v15 v16
    • v18 (18) = OffPtr <*int> [0] v15
    • v19 (18) = Load <int> v18 v16
    • v21 (18) = Eq64 <bool> v19 v20
  • Plainb2 (18)
  • b4: ← b2
    • v29 (21) = FwdRef <*hmap> {{[] h}} (h[*hmap])
    • v30 (21) = FwdRef <mem> {{[] mem}}
    • v31 (21) = NilCheck <void> v29 v30
    • v32 (21) = OffPtr <*uint8> [8] v29
    • v33 (21) = Load <uint8> v32 v30
    • v35 (21) = And8 <uint8> v33 v34
    • v37 (21) = Neq8 <bool> v35 v36
  • If v37b7 b6 (21)
  • b5: ← b2
    • v25 (19) = PtrIndex <*byte> v23 v20
    • v26 (19) = Copy <unsafe.Pointer> v25
    • v28 (19) = FwdRef <mem> {{[] mem}}
    • v27 (19) = MakeResult <unsafe.Pointer,mem> v26 v28
  • Ret v27 (+19)
  • b6: ← b4 b7
    • v42 (24) = FwdRef <mem> {{[] mem}}
    • v43 (+24) = InlMark <void> [5605] v42
    • v44 (244) = Copy <unsafe.Pointer> v6
    • v45 (244) = Copy <*stringStruct> v44 (~R0[*stringStruct])
  • Plainb8 (+24)
  • b7: ← b4
    • v39 (22) = FwdRef <mem> {{[] mem}}
    • v40 (22) = StaticLECall <mem> {AuxCall{runtime.fatal}} [16] v38 v39
    • v41 (22) = SelectN <mem> [0] v40
  • Plainb6 (22)
  • b8: ← b6
    • v46 (24) = FwdRef <*stringStruct> {{[] ~R0}} (~R0[*stringStruct], key[*stringStruct])
    • v47 (25) = FwdRef <*hmap> {{[] h}} (h[*hmap])
    • v48 (25) = FwdRef <mem> {{[] mem}}
    • v49 (25) = NilCheck <void> v47 v48
    • v50 (25) = OffPtr <*uint8> [9] v47
    • v51 (25) = Load <uint8> v50 v48
    • v52 (25) = Eq8 <bool> v51 v36
  • If v52b10 b9 (25)
  • b9: ← b8
  • Plainb64 (80)
  • b10: ← b8
    • v53 (27) = FwdRef <*hmap> {{[] h}} (h[*hmap])
    • v54 (27) = FwdRef <mem> {{[] mem}}
    • v55 (27) = NilCheck <void> v53 v54
    • v56 (27) = OffPtr <*unsafe.Pointer> [16] v53
    • v57 (27) = Load <unsafe.Pointer> v56 v54
    • v58 (27) = Copy <*bmap> v57 (b[*bmap])
    • v59 (28) = FwdRef <*stringStruct> {{[] key}} (key[*stringStruct])
    • v60 (28) = NilCheck <void> v59 v54
    • v61 (28) = OffPtr <*int> [8] v59
    • v62 (28) = Load <int> v61 v54
    • v64 (28) = Less64 <bool> v62 v63
  • If v64b12 b11 (28)
  • b11: ← b10
    • v181 (46) = FwdRef <*bmap> {{[] b}} (b[*bmap], b[*bmap])
    • v182 (46) = FwdRef <mem> {{[] mem}}
    • v183 (+46) = InlMark <void> [5610] v182
    • v184 (218) = Copy <unsafe.Pointer> v181 (p[unsafe.Pointer])
    • v185 (+218) = InlMark <void> [5630] v182
    • v186 (18) = Convert <uintptr> v184 v182
    • v187 (18) = Add64 <uintptr> v186 v69
    • v188 (18) = Convert <unsafe.Pointer> v187 v182 (~R0[unsafe.Pointer])
  • Plainb36 (+218)
  • b12: ← b10
    • v65 (30) = FwdRef <*bmap> {{[] b}} (b[*bmap], b[*bmap])
    • v66 (30) = FwdRef <mem> {{[] mem}}
    • v67 (+30) = InlMark <void> [5606] v66
    • v68 (218) = Copy <unsafe.Pointer> v65 (p[unsafe.Pointer])
    • v70 (+218) = InlMark <void> [5629] v66
    • v71 (18) = Convert <uintptr> v68 v66
    • v72 (18) = Add64 <uintptr> v71 v69
    • v73 (18) = Convert <unsafe.Pointer> v72 v66 (~R0[unsafe.Pointer])
  • Plainb13 (+218)
  • b13: ← b12
    • v74 (30) = FwdRef <unsafe.Pointer> {{[] ~R0}} (~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
  • Plainb14 (+30)
  • b14: ← b13
    • v76 (30) = FwdRef <unsafe.Pointer> {{[] ~R0}} (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
  • Plainb15 (30)
  • b15: ← b14 b35
    • v77 (30) = FwdRef <uintptr> {{[] i}} (i[uintptr])
    • v78 (30) = Less64U <bool> v77 v69
  • If v78b16 b18 (likely) (30)
  • b16: ← b15
    • v79 (31) = FwdRef <unsafe.Pointer> {{[] kptr}} (kptr[unsafe.Pointer])
    • v80 (31) = Copy <*stringStruct> v79 (k[*stringStruct])
    • v81 (32) = FwdRef <mem> {{[] mem}}
    • v82 (32) = NilCheck <void> v80 v81
    • v83 (32) = OffPtr <*int> [8] v80
    • v84 (32) = Load <int> v83 v81
    • v85 (32) = FwdRef <*stringStruct> {{[] key}} (key[*stringStruct])
    • v86 (32) = NilCheck <void> v85 v81
    • v87 (32) = OffPtr <*int> [8] v85
    • v88 (32) = Load <int> v87 v81
    • v89 (32) = Neq64 <bool> v84 v88
  • If v89b19 b20 (32)
  • b17: ← b26 b32
    • v165 (30) = FwdRef <unsafe.Pointer> {{[] kptr}} (kptr[unsafe.Pointer], p[unsafe.Pointer])
    • v167 (30) = FwdRef <mem> {{[] mem}}
    • v168 (+30) = InlMark <void> [5607] v167
    • v169 (18) = Convert <uintptr> v165 v167
    • v170 (18) = Add64 <uintptr> v169 v166
    • v171 (18) = Convert <unsafe.Pointer> v170 v167 (~R0[unsafe.Pointer])
  • Plainb35 (+30)
  • b18: ← b15 b27
    • v177 (42) = PtrIndex <*byte> v176 v20
    • v178 (42) = Copy <unsafe.Pointer> v177
    • v180 (42) = FwdRef <mem> {{[] mem}}
    • v179 (42) = MakeResult <unsafe.Pointer,mem> v178 v180
  • Ret v179 (+42)
  • b19: ← b16 b23
    • v106 (32) = FwdRef <bool> {{[] .autotmp_102}}
  • If v106b25 b24 (32)
  • b20: ← b16
    • v90 (32) = FwdRef <*bmap> {{[] b}} (b[*bmap])
    • v91 (32) = FwdRef <mem> {{[] mem}}
    • v92 (32) = NilCheck <void> v90 v91
    • v93 (32) = OffPtr <*[8]uint8> [0] v90
    • v94 (32) = FwdRef <uintptr> {{[] i}} (i[uintptr])
    • v96 (32) = IsInBounds <bool> v94 v95
  • If v96b21 b22 (likely) (32)
  • b21: ← b20
    • v99 (32) = PtrIndex <*uint8> v93 v94
    • v100 (32) = FwdRef <mem> {{[] mem}}
    • v101 (32) = Load <uint8> v99 v100 (x[uint8])
    • v102 (+32) = InlMark <void> [5608] v100
    • v104 (113) = Leq8U <bool> v101 v103 (~R0[bool])
  • Plainb23 (+32)
  • b22: ← b20
    • v97 (32) = FwdRef <mem> {{[] mem}}
    • v98 (32) = PanicBounds <mem> [1] v94 v95 v97
  • Exit v98 (32)
  • b23: ← b21
    • v105 (32) = FwdRef <bool> {{[] ~R0}} (~R0[bool])
  • Plainb19 (32)
  • b24: ← b19
    • v119 (38) = FwdRef <*stringStruct> {{[] k}} (k[*stringStruct])
    • v120 (38) = FwdRef <mem> {{[] mem}}
    • v121 (38) = NilCheck <void> v119 v120
    • v122 (38) = OffPtr <*unsafe.Pointer> [0] v119
    • v123 (38) = Load <unsafe.Pointer> v122 v120
    • v124 (38) = FwdRef <*stringStruct> {{[] key}} (key[*stringStruct])
    • v125 (38) = NilCheck <void> v124 v120
    • v126 (38) = OffPtr <*unsafe.Pointer> [0] v124
    • v127 (38) = Load <unsafe.Pointer> v126 v120
    • v128 (38) = EqPtr <bool> v123 v127
  • If v128b30 b31 (38)
  • b25: ← b19
    • v107 (33) = FwdRef <*bmap> {{[] b}} (b[*bmap])
    • v108 (33) = FwdRef <mem> {{[] mem}}
    • v109 (33) = NilCheck <void> v107 v108
    • v110 (33) = OffPtr <*[8]uint8> [0] v107
    • v111 (33) = FwdRef <uintptr> {{[] i}} (i[uintptr])
    • v112 (33) = IsInBounds <bool> v111 v95
  • If v112b28 b29 (likely) (33)
  • b26: ← b28
  • Plainb17 (+36)
  • b27: ← b28
  • Plainb18 (+34)
  • b28: ← b25
    • v115 (33) = PtrIndex <*uint8> v110 v111
    • v116 (33) = FwdRef <mem> {{[] mem}}
    • v117 (33) = Load <uint8> v115 v116
    • v118 (33) = Eq8 <bool> v117 v36
  • If v118b27 b26 (33)
  • b29: ← b25
    • v113 (33) = FwdRef <mem> {{[] mem}}
    • v114 (33) = PanicBounds <mem> [1] v111 v95 v113
  • Exit v114 (33)
  • b30: ← b24 b31
    • v145 (38) = FwdRef <bool> {{[] .autotmp_102}}
  • If v145b33 b32 (38)
  • b31: ← b24
    • v129 (38) = FwdRef <*stringStruct> {{[] k}} (k[*stringStruct])
    • v130 (38) = FwdRef <mem> {{[] mem}}
    • v131 (38) = NilCheck <void> v129 v130
    • v132 (38) = OffPtr <*unsafe.Pointer> [0] v129
    • v133 (38) = Load <unsafe.Pointer> v132 v130
    • v134 (38) = FwdRef <*stringStruct> {{[] key}} (key[*stringStruct])
    • v135 (38) = NilCheck <void> v134 v130
    • v136 (38) = OffPtr <*unsafe.Pointer> [0] v134
    • v137 (38) = Load <unsafe.Pointer> v136 v130
    • v138 (38) = NilCheck <void> v134 v130
    • v139 (38) = OffPtr <*int> [8] v134
    • v140 (38) = Load <int> v139 v130
    • v141 (38) = Copy <uintptr> v140
    • v142 (38) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v133 v137 v141 v130
    • v143 (38) = SelectN <mem> [1] v142
    • v144 (38) = SelectN <bool> [0] v142
  • Plainb30 (38)
  • b32: ← b30
  • Plainb17 (30)
  • b33: ← b30
    • v146 (39) = FwdRef <*bmap> {{[] b}} (b[*bmap])
    • v147 (39) = Copy <unsafe.Pointer> v146 (p[unsafe.Pointer])
    • v149 (39) = FwdRef <uintptr> {{[] i}} (i[uintptr])
    • v150 (39) = FwdRef <*abi.MapType> {{[] t}} (t[*abi.MapType])
    • v151 (39) = FwdRef <mem> {{[] mem}}
    • v152 (39) = NilCheck <void> v150 v151
    • v153 (39) = OffPtr <*uint8> [81] v150
    • v154 (39) = Load <uint8> v153 v151
    • v155 (39) = ZeroExt8to64 <uintptr> v154
    • v156 (39) = Mul64 <uintptr> v149 v155
    • v157 (39) = Add64 <uintptr> v148 v156 (x[uintptr])
    • v158 (+39) = InlMark <void> [5609] v151
    • v159 (18) = Convert <uintptr> v147 v151
    • v160 (18) = Add64 <uintptr> v159 v157
    • v161 (18) = Convert <unsafe.Pointer> v160 v151 (~R0[unsafe.Pointer])
  • Plainb34 (+39)
  • b34: ← b33
    • v162 (39) = FwdRef <unsafe.Pointer> {{[] ~R0}} (~R0[unsafe.Pointer])
    • v164 (39) = FwdRef <mem> {{[] mem}}
    • v163 (39) = MakeResult <unsafe.Pointer,mem> v162 v164
  • Ret v163 (+39)
  • b35: ← b17
    • v172 (30) = FwdRef <uintptr> {{[] i}} (i[uintptr])
    • v174 (30) = Add64 <uintptr> v172 v173 (i[uintptr])
    • v175 (30) = FwdRef <unsafe.Pointer> {{[] ~R0}} (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
  • Plainb15 (30)
  • b36: ← b11
    • v189 (46) = FwdRef <unsafe.Pointer> {{[] ~R0}} (~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
  • Plainb37 (+46)
  • b37: ← b36
    • v190 (46) = FwdRef <unsafe.Pointer> {{[] ~R0}} (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
  • Plainb38 (46)
  • b38: ← b37 b65
    • v191 (46) = FwdRef <uintptr> {{[] i}} (i[uintptr])
    • v192 (46) = Less64U <bool> v191 v69
  • If v192b39 b41 (likely) (46)
  • b39: ← b38
    • v193 (47) = FwdRef <unsafe.Pointer> {{[] kptr}} (kptr[unsafe.Pointer])
    • v194 (47) = Copy <*stringStruct> v193 (k[*stringStruct])
    • v195 (48) = FwdRef <mem> {{[] mem}}
    • v196 (48) = NilCheck <void> v194 v195
    • v197 (48) = OffPtr <*int> [8] v194
    • v198 (48) = Load <int> v197 v195
    • v199 (48) = FwdRef <*stringStruct> {{[] key}} (key[*stringStruct])
    • v200 (48) = NilCheck <void> v199 v195
    • v201 (48) = OffPtr <*int> [8] v199
    • v202 (48) = Load <int> v201 v195
    • v203 (48) = Neq64 <bool> v198 v202
  • If v203b42 b43 (48)
  • b40: ← b49 b57 b61 b62
    • v421 (46) = FwdRef <unsafe.Pointer> {{[] kptr}} (p[unsafe.Pointer], kptr[unsafe.Pointer])
    • v422 (46) = FwdRef <mem> {{[] mem}}
    • v423 (+46) = InlMark <void> [5611] v422
    • v424 (18) = Convert <uintptr> v421 v422
    • v425 (18) = Add64 <uintptr> v424 v166
    • v426 (18) = Convert <unsafe.Pointer> v425 v422 (~R0[unsafe.Pointer])
  • Plainb65 (+46)
  • b41: ← b38 b50
    • v430 (71) = FwdRef <uintptr> {{[] keymaybe}} (keymaybe[uintptr])
    • v431 (71) = Neq64 <bool> v430 v69
  • If v431b67 b66 (71)
  • b42: ← b39 b46
    • v218 (48) = FwdRef <bool> {{[] .autotmp_102}}
  • If v218b48 b47 (48)
  • b43: ← b39
    • v204 (48) = FwdRef <*bmap> {{[] b}} (b[*bmap])
    • v205 (48) = FwdRef <mem> {{[] mem}}
    • v206 (48) = NilCheck <void> v204 v205
    • v207 (48) = OffPtr <*[8]uint8> [0] v204
    • v208 (48) = FwdRef <uintptr> {{[] i}} (i[uintptr])
    • v209 (48) = IsInBounds <bool> v208 v95
  • If v209b44 b45 (likely) (48)
  • b44: ← b43
    • v212 (48) = PtrIndex <*uint8> v207 v208
    • v213 (48) = FwdRef <mem> {{[] mem}}
    • v214 (48) = Load <uint8> v212 v213 (x[uint8])
    • v215 (+48) = InlMark <void> [5612] v213
    • v216 (113) = Leq8U <bool> v214 v103 (~R0[bool])
  • Plainb46 (+48)
  • b45: ← b43
    • v210 (48) = FwdRef <mem> {{[] mem}}
    • v211 (48) = PanicBounds <mem> [1] v208 v95 v210
  • Exit v211 (48)
  • b46: ← b44
    • v217 (48) = FwdRef <bool> {{[] ~R0}} (~R0[bool])
  • Plainb42 (48)
  • b47: ← b42
    • v231 (54) = FwdRef <*stringStruct> {{[] k}} (k[*stringStruct])
    • v232 (54) = FwdRef <mem> {{[] mem}}
    • v233 (54) = NilCheck <void> v231 v232
    • v234 (54) = OffPtr <*unsafe.Pointer> [0] v231
    • v235 (54) = Load <unsafe.Pointer> v234 v232
    • v236 (54) = FwdRef <*stringStruct> {{[] key}} (key[*stringStruct])
    • v237 (54) = NilCheck <void> v236 v232
    • v238 (54) = OffPtr <*unsafe.Pointer> [0] v236
    • v239 (54) = Load <unsafe.Pointer> v238 v232
    • v240 (54) = EqPtr <bool> v235 v239
  • If v240b54 b53 (54)
  • b48: ← b42
    • v219 (49) = FwdRef <*bmap> {{[] b}} (b[*bmap])
    • v220 (49) = FwdRef <mem> {{[] mem}}
    • v221 (49) = NilCheck <void> v219 v220
    • v222 (49) = OffPtr <*[8]uint8> [0] v219
    • v223 (49) = FwdRef <uintptr> {{[] i}} (i[uintptr])
    • v224 (49) = IsInBounds <bool> v223 v95
  • If v224b51 b52 (likely) (49)
  • b49: ← b51
  • Plainb40 (+52)
  • b50: ← b51
  • Plainb41 (+50)
  • b51: ← b48
    • v227 (49) = PtrIndex <*uint8> v222 v223
    • v228 (49) = FwdRef <mem> {{[] mem}}
    • v229 (49) = Load <uint8> v227 v228
    • v230 (49) = Eq8 <bool> v229 v36
  • If v230b50 b49 (49)
  • b52: ← b48
    • v225 (49) = FwdRef <mem> {{[] mem}}
    • v226 (49) = PanicBounds <mem> [1] v223 v95 v225
  • Exit v226 (49)
  • b53: ← b47
    • v259 (58) = FwdRef <*stringStruct> {{[] key}} (key[*stringStruct])
    • v260 (58) = FwdRef <mem> {{[] mem}}
    • v261 (58) = NilCheck <void> v259 v260
    • v262 (58) = OffPtr <*unsafe.Pointer> [0] v259
    • v263 (58) = Load <unsafe.Pointer> v262 v260
    • v264 (58) = Copy <*[4]byte> v263
    • v265 (58) = FwdRef <*stringStruct> {{[] k}} (k[*stringStruct])
    • v266 (58) = NilCheck <void> v265 v260
    • v267 (58) = OffPtr <*unsafe.Pointer> [0] v265
    • v268 (58) = Load <unsafe.Pointer> v267 v260
    • v269 (58) = Copy <*[4]byte> v268
    • v270 (58) = NilCheck <void> v264 v260
    • v272 (58) = PtrIndex <*byte> v264 v20
    • v273 (58) = Load <byte> v272 v260
    • v274 (58) = Copy <uint8> v273
    • v275 (58) = ZeroExt8to32 <uint32> v274
    • v276 (58) = NilCheck <void> v264 v260
    • v278 (58) = PtrIndex <*byte> v264 v277
    • v279 (58) = Load <byte> v278 v260
    • v280 (58) = Copy <uint8> v279
    • v281 (58) = ZeroExt8to32 <uint32> v280
    • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
    • v284 (58) = Or32 <uint32> v275 v283
    • v285 (58) = NilCheck <void> v264 v260
    • v287 (58) = PtrIndex <*byte> v264 v286
    • v288 (58) = Load <byte> v287 v260
    • v289 (58) = Copy <uint8> v288
    • v290 (58) = ZeroExt8to32 <uint32> v289
    • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
    • v293 (58) = Or32 <uint32> v284 v292
    • v294 (58) = NilCheck <void> v264 v260
    • v296 (58) = PtrIndex <*byte> v264 v295
    • v297 (58) = Load <byte> v296 v260
    • v298 (58) = Copy <uint8> v297
    • v299 (58) = ZeroExt8to32 <uint32> v298
    • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
    • v302 (58) = Or32 <uint32> v293 v301
    • v303 (58) = NilCheck <void> v269 v260
    • v304 (58) = PtrIndex <*byte> v269 v20
    • v305 (58) = Load <byte> v304 v260
    • v306 (58) = Copy <uint8> v305
    • v307 (58) = ZeroExt8to32 <uint32> v306
    • v308 (58) = NilCheck <void> v269 v260
    • v309 (58) = PtrIndex <*byte> v269 v277
    • v310 (58) = Load <byte> v309 v260
    • v311 (58) = Copy <uint8> v310
    • v312 (58) = ZeroExt8to32 <uint32> v311
    • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
    • v314 (58) = Or32 <uint32> v307 v313
    • v315 (58) = NilCheck <void> v269 v260
    • v316 (58) = PtrIndex <*byte> v269 v286
    • v317 (58) = Load <byte> v316 v260
    • v318 (58) = Copy <uint8> v317
    • v319 (58) = ZeroExt8to32 <uint32> v318
    • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
    • v321 (58) = Or32 <uint32> v314 v320
    • v322 (58) = NilCheck <void> v269 v260
    • v323 (58) = PtrIndex <*byte> v269 v295
    • v324 (58) = Load <byte> v323 v260
    • v325 (58) = Copy <uint8> v324
    • v326 (58) = ZeroExt8to32 <uint32> v325
    • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
    • v328 (58) = Or32 <uint32> v321 v327
    • v329 (58) = Neq32 <bool> v302 v328
  • If v329b57 b56 (58)
  • b54: ← b47
    • v241 (55) = FwdRef <*bmap> {{[] b}} (b[*bmap])
    • v242 (55) = Copy <unsafe.Pointer> v241 (p[unsafe.Pointer])
    • v243 (55) = FwdRef <uintptr> {{[] i}} (i[uintptr])
    • v244 (55) = FwdRef <*abi.MapType> {{[] t}} (t[*abi.MapType])
    • v245 (55) = FwdRef <mem> {{[] mem}}
    • v246 (55) = NilCheck <void> v244 v245
    • v247 (55) = OffPtr <*uint8> [81] v244
    • v248 (55) = Load <uint8> v247 v245
    • v249 (55) = ZeroExt8to64 <uintptr> v248
    • v250 (55) = Mul64 <uintptr> v243 v249
    • v251 (55) = Add64 <uintptr> v148 v250 (x[uintptr])
    • v252 (+55) = InlMark <void> [5613] v245
    • v253 (18) = Convert <uintptr> v242 v245
    • v254 (18) = Add64 <uintptr> v253 v251
    • v255 (18) = Convert <unsafe.Pointer> v254 v245 (~R0[unsafe.Pointer])
  • Plainb55 (+55)
  • b55: ← b54
    • v256 (55) = FwdRef <unsafe.Pointer> {{[] ~R0}} (~R0[unsafe.Pointer])
    • v258 (55) = FwdRef <mem> {{[] mem}}
    • v257 (55) = MakeResult <unsafe.Pointer,mem> v256 v258
  • Ret v257 (+55)
  • b56: ← b53
    • v330 (62) = FwdRef <*stringStruct> {{[] key}} (key[*stringStruct])
    • v331 (62) = FwdRef <mem> {{[] mem}}
    • v332 (62) = NilCheck <void> v330 v331
    • v333 (62) = OffPtr <*unsafe.Pointer> [0] v330
    • v334 (62) = Load <unsafe.Pointer> v333 v331 (p[unsafe.Pointer])
    • v335 (62) = NilCheck <void> v330 v331
    • v336 (62) = OffPtr <*int> [8] v330
    • v337 (62) = Load <int> v336 v331
    • v338 (62) = Copy <uintptr> v337
    • v340 (62) = Sub64 <uintptr> v338 v339 (x[uintptr])
    • v341 (+62) = InlMark <void> [5614] v331
    • v342 (18) = Convert <uintptr> v334 v331
    • v343 (18) = Add64 <uintptr> v342 v340
    • v344 (18) = Convert <unsafe.Pointer> v343 v331 (~R0[unsafe.Pointer])
  • Plainb58 (+62)
  • b57: ← b53
  • Plainb40 (+59)
  • b58: ← b56
    • v345 (62) = FwdRef <*stringStruct> {{[] k}} (k[*stringStruct])
    • v346 (62) = FwdRef <mem> {{[] mem}}
    • v347 (62) = NilCheck <void> v345 v346
    • v348 (62) = OffPtr <*unsafe.Pointer> [0] v345
    • v349 (62) = Load <unsafe.Pointer> v348 v346 (p[unsafe.Pointer])
    • v350 (62) = FwdRef <*stringStruct> {{[] key}} (key[*stringStruct])
    • v351 (62) = NilCheck <void> v350 v346
    • v352 (62) = OffPtr <*int> [8] v350
    • v353 (62) = Load <int> v352 v346
    • v354 (62) = Copy <uintptr> v353
    • v355 (62) = Sub64 <uintptr> v354 v339 (x[uintptr])
    • v356 (+62) = InlMark <void> [5615] v346
    • v357 (18) = Convert <uintptr> v349 v346
    • v358 (18) = Add64 <uintptr> v357 v355
    • v359 (18) = Convert <unsafe.Pointer> v358 v346 (~R0[unsafe.Pointer])
  • Plainb59 (+62)
  • b59: ← b58
    • v360 (62) = FwdRef <unsafe.Pointer> {{[] ~R0}} (~R0[unsafe.Pointer])
    • v361 (62) = Copy <*[4]byte> v360
    • v362 (62) = FwdRef <unsafe.Pointer> {{[] ~R0}} (~R0[unsafe.Pointer])
    • v363 (62) = Copy <*[4]byte> v362
    • v364 (62) = FwdRef <mem> {{[] mem}}
    • v365 (62) = NilCheck <void> v361 v364
    • v366 (62) = PtrIndex <*byte> v361 v20
    • v367 (62) = Load <byte> v366 v364
    • v368 (62) = Copy <uint8> v367
    • v369 (62) = ZeroExt8to32 <uint32> v368
    • v370 (62) = NilCheck <void> v361 v364
    • v371 (62) = PtrIndex <*byte> v361 v277
    • v372 (62) = Load <byte> v371 v364
    • v373 (62) = Copy <uint8> v372
    • v374 (62) = ZeroExt8to32 <uint32> v373
    • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
    • v376 (62) = Or32 <uint32> v369 v375
    • v377 (62) = NilCheck <void> v361 v364
    • v378 (62) = PtrIndex <*byte> v361 v286
    • v379 (62) = Load <byte> v378 v364
    • v380 (62) = Copy <uint8> v379
    • v381 (62) = ZeroExt8to32 <uint32> v380
    • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
    • v383 (62) = Or32 <uint32> v376 v382
    • v384 (62) = NilCheck <void> v361 v364
    • v385 (62) = PtrIndex <*byte> v361 v295
    • v386 (62) = Load <byte> v385 v364
    • v387 (62) = Copy <uint8> v386
    • v388 (62) = ZeroExt8to32 <uint32> v387
    • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
    • v390 (62) = Or32 <uint32> v383 v389
    • v391 (62) = NilCheck <void> v363 v364
    • v392 (62) = PtrIndex <*byte> v363 v20
    • v393 (62) = Load <byte> v392 v364
    • v394 (62) = Copy <uint8> v393
    • v395 (62) = ZeroExt8to32 <uint32> v394
    • v396 (62) = NilCheck <void> v363 v364
    • v397 (62) = PtrIndex <*byte> v363 v277
    • v398 (62) = Load <byte> v397 v364
    • v399 (62) = Copy <uint8> v398
    • v400 (62) = ZeroExt8to32 <uint32> v399
    • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
    • v402 (62) = Or32 <uint32> v395 v401
    • v403 (62) = NilCheck <void> v363 v364
    • v404 (62) = PtrIndex <*byte> v363 v286
    • v405 (62) = Load <byte> v404 v364
    • v406 (62) = Copy <uint8> v405
    • v407 (62) = ZeroExt8to32 <uint32> v406
    • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
    • v409 (62) = Or32 <uint32> v402 v408
    • v410 (62) = NilCheck <void> v363 v364
    • v411 (62) = PtrIndex <*byte> v363 v295
    • v412 (62) = Load <byte> v411 v364
    • v413 (62) = Copy <uint8> v412
    • v414 (62) = ZeroExt8to32 <uint32> v413
    • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
    • v416 (62) = Or32 <uint32> v409 v415
    • v417 (62) = Neq32 <bool> v390 v416
  • If v417b61 b60 (62)
  • b60: ← b59
    • v418 (65) = FwdRef <uintptr> {{[] keymaybe}} (keymaybe[uintptr])
    • v419 (65) = Neq64 <bool> v418 v69
  • If v419b63 b62 (65)
  • b61: ← b59
  • Plainb40 (+63)
  • b62: ← b60
    • v420 (69) = FwdRef <uintptr> {{[] i}} (i[uintptr], keymaybe[uintptr])
  • Plainb40 (69)
  • b63: ← b60
  • Plainb64 (+67)
  • b64: ← b63 b9
    • v484 (80) = Copy <unsafe.Pointer> v6 (p[unsafe.Pointer])
    • v485 (80) = FwdRef <mem> {{[] mem}}
    • v486 (+80) = InlMark <void> [5618] v485
    • v487 (221) = Convert <uintptr> v484 v485 (x[uintptr])
    • v488 (222) = Xor64 <uintptr> v487 v75
    • v489 (222) = Convert <unsafe.Pointer> v488 v485 (~R0[unsafe.Pointer])
  • Plainb72 (+80)
  • b65: ← b40
    • v427 (46) = FwdRef <uintptr> {{[] i}} (i[uintptr])
    • v428 (46) = Add64 <uintptr> v427 v173 (i[uintptr])
    • v429 (46) = FwdRef <unsafe.Pointer> {{[] ~R0}} (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
  • Plainb38 (46)
  • b66: ← b41 b69
    • v480 (77) = PtrIndex <*byte> v479 v20
    • v481 (77) = Copy <unsafe.Pointer> v480
    • v483 (77) = FwdRef <mem> {{[] mem}}
    • v482 (77) = MakeResult <unsafe.Pointer,mem> v481 v483
  • Ret v482 (+77)
  • b67: ← b41
    • v432 (72) = FwdRef <*bmap> {{[] b}} (b[*bmap])
    • v433 (72) = Copy <unsafe.Pointer> v432 (p[unsafe.Pointer])
    • v434 (72) = FwdRef <uintptr> {{[] keymaybe}} (keymaybe[uintptr])
    • v436 (72) = Mul64 <uintptr> v434 v435
    • v437 (72) = Mul64 <uintptr> v436 v69
    • v438 (72) = Add64 <uintptr> v69 v437 (x[uintptr])
    • v439 (72) = FwdRef <mem> {{[] mem}}
    • v440 (+72) = InlMark <void> [5616] v439
    • v441 (18) = Convert <uintptr> v433 v439
    • v442 (18) = Add64 <uintptr> v441 v438
    • v443 (18) = Convert <unsafe.Pointer> v442 v439 (~R0[unsafe.Pointer])
  • Plainb68 (+72)
  • b68: ← b67
    • v444 (72) = FwdRef <unsafe.Pointer> {{[] ~R0}} (~R0[unsafe.Pointer])
    • v445 (72) = Copy <*stringStruct> v444 (k[*stringStruct])
    • v446 (73) = FwdRef <mem> {{[] mem}}
    • v447 (73) = NilCheck <void> v445 v446
    • v448 (73) = OffPtr <*unsafe.Pointer> [0] v445
    • v449 (73) = Load <unsafe.Pointer> v448 v446
    • v450 (73) = FwdRef <*stringStruct> {{[] key}} (key[*stringStruct])
    • v451 (73) = NilCheck <void> v450 v446
    • v452 (73) = OffPtr <*unsafe.Pointer> [0] v450
    • v453 (73) = Load <unsafe.Pointer> v452 v446
    • v454 (73) = NilCheck <void> v450 v446
    • v455 (73) = OffPtr <*int> [8] v450
    • v456 (73) = Load <int> v455 v446
    • v457 (73) = Copy <uintptr> v456
    • v458 (73) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v457 v446
    • v459 (73) = SelectN <mem> [1] v458
    • v460 (73) = SelectN <bool> [0] v458
  • If v460b70 b69 (73)
  • b69: ← b68
  • Plainb66 (77)
  • b70: ← b68
    • v461 (74) = FwdRef <*bmap> {{[] b}} (b[*bmap])
    • v462 (74) = Copy <unsafe.Pointer> v461 (p[unsafe.Pointer])
    • v463 (74) = FwdRef <uintptr> {{[] keymaybe}} (keymaybe[uintptr])
    • v464 (74) = FwdRef <*abi.MapType> {{[] t}} (t[*abi.MapType])
    • v465 (74) = FwdRef <mem> {{[] mem}}
    • v466 (74) = NilCheck <void> v464 v465
    • v467 (74) = OffPtr <*uint8> [81] v464
    • v468 (74) = Load <uint8> v467 v465
    • v469 (74) = ZeroExt8to64 <uintptr> v468
    • v470 (74) = Mul64 <uintptr> v463 v469
    • v471 (74) = Add64 <uintptr> v148 v470 (x[uintptr])
    • v472 (+74) = InlMark <void> [5617] v465
    • v473 (18) = Convert <uintptr> v462 v465
    • v474 (18) = Add64 <uintptr> v473 v471
    • v475 (18) = Convert <unsafe.Pointer> v474 v465 (~R0[unsafe.Pointer])
  • Plainb71 (+74)
  • b71: ← b70
    • v476 (74) = FwdRef <unsafe.Pointer> {{[] ~R0}} (~R0[unsafe.Pointer])
    • v478 (74) = FwdRef <mem> {{[] mem}}
    • v477 (74) = MakeResult <unsafe.Pointer,mem> v476 v478
  • Ret v477 (+74)
  • b72: ← b64
    • v490 (80) = FwdRef <*hmap> {{[] h}} (h[*hmap])
    • v491 (80) = FwdRef <mem> {{[] mem}}
    • v492 (80) = NilCheck <void> v490 v491
    • v493 (80) = OffPtr <*uint32> [12] v490
    • v494 (80) = Load <uint32> v493 v491
    • v495 (80) = ZeroExt32to64 <uintptr> v494
    • v496 (80) = FwdRef <*abi.MapType> {{[] t}} (t[*abi.MapType])
    • v497 (80) = NilCheck <void> v496 v491
    • v498 (80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v496
    • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v491
    • v500 (80) = FwdRef <unsafe.Pointer> {{[] ~R0}} (~R0[unsafe.Pointer])
    • v501 (80) = Load <uintptr> v499 v491
    • v502 (80) = ClosureLECall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v500 v495 v491
    • v503 (80) = SelectN <mem> [1] v502
    • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr])
    • v505 (81) = NilCheck <void> v490 v503
    • v506 (81) = OffPtr <*uint8> [9] v490
    • v507 (81) = Load <uint8> v506 v503 (b[uint8], b[uint8])
    • v508 (+81) = InlMark <void> [5619] v503
    • v509 (+192) = InlMark <void> [5631] v503
    • v511 (187) = And8 <uint8> v507 v510
    • v512 (187) = Lsh64x8 <uintptr> [false] v173 v511 (~R0[uintptr])
  • Plainb73 (+192)
  • b73: ← b72
    • v513 (192) = FwdRef <uintptr> {{[] ~R0}} (~R0[uintptr])
    • v514 (192) = Sub64 <uintptr> v513 v173 (~R0[uintptr])
  • Plainb74 (+81)
  • b74: ← b73
    • v515 (81) = FwdRef <uintptr> {{[] ~R0}} (~R0[uintptr], m[uintptr])
    • v516 (82) = FwdRef <*hmap> {{[] h}} (h[*hmap])
    • v517 (82) = FwdRef <mem> {{[] mem}}
    • v518 (82) = NilCheck <void> v516 v517
    • v519 (82) = OffPtr <*unsafe.Pointer> [16] v516
    • v520 (82) = Load <unsafe.Pointer> v519 v517 (p[unsafe.Pointer])
    • v521 (82) = FwdRef <uintptr> {{[] hash}} (hash[uintptr])
    • v522 (82) = And64 <uintptr> v521 v515
    • v523 (82) = FwdRef <*abi.MapType> {{[] t}} (t[*abi.MapType])
    • v524 (82) = NilCheck <void> v523 v517
    • v525 (82) = OffPtr <*uint16> [82] v523
    • v526 (82) = Load <uint16> v525 v517
    • v527 (82) = ZeroExt16to64 <uintptr> v526
    • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
    • v529 (+82) = InlMark <void> [5620] v517
    • v530 (18) = Convert <uintptr> v520 v517
    • v531 (18) = Add64 <uintptr> v530 v528
    • v532 (18) = Convert <unsafe.Pointer> v531 v517 (~R0[unsafe.Pointer])
  • Plainb75 (+82)
  • b75: ← b74
    • v533 (82) = FwdRef <unsafe.Pointer> {{[] ~R0}} (~R0[unsafe.Pointer])
    • v534 (82) = Copy <*bmap> v533 (b[*bmap])
    • v535 (83) = FwdRef <*hmap> {{[] h}} (h[*hmap])
    • v536 (83) = FwdRef <mem> {{[] mem}}
    • v537 (83) = NilCheck <void> v535 v536
    • v538 (83) = OffPtr <*unsafe.Pointer> [24] v535
    • v539 (83) = Load <unsafe.Pointer> v538 v536 (c[unsafe.Pointer])
    • v540 (83) = NeqPtr <bool> v539 v12
  • If v540b77 b76 (83)
  • b76: ← b75 b85
    • v584 (93) = FwdRef <uintptr> {{[] hash}} (hash[uintptr], hash[uintptr])
    • v585 (93) = FwdRef <mem> {{[] mem}}
    • v586 (+93) = InlMark <void> [5624] v585
    • v588 (197) = Rsh64Ux64 <uintptr> [false] v584 v587
    • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
    • v590 (198) = Less8U <bool> v589 v579
  • If v590b88 b87 (198)
  • b77: ← b75
    • v541 (84) = FwdRef <*hmap> {{[] h}} (h[*hmap], h[*hmap])
    • v542 (84) = FwdRef <mem> {{[] mem}}
    • v543 (+84) = InlMark <void> [5621] v542
    • v544 (1128) = NilCheck <void> v541 v542
    • v545 (1128) = OffPtr <*uint8> [8] v541
    • v546 (1128) = Load <uint8> v545 v542
    • v548 (1128) = And8 <uint8> v546 v547
    • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
  • Plainb78 (+84)
  • b78: ← b77
    • v550 (84) = FwdRef <bool> {{[] ~R0}} (~R0[bool])
  • If v550b79 b80 (84)
  • b79: ← b78 b80
    • v554 (88) = FwdRef <unsafe.Pointer> {{[] c}} (c[unsafe.Pointer], p[unsafe.Pointer])
    • v555 (88) = FwdRef <uintptr> {{[] hash}} (hash[uintptr])
    • v556 (88) = FwdRef <uintptr> {{[] m}} (m[uintptr])
    • v557 (88) = And64 <uintptr> v555 v556
    • v558 (88) = FwdRef <*abi.MapType> {{[] t}} (t[*abi.MapType])
    • v559 (88) = FwdRef <mem> {{[] mem}}
    • v560 (88) = NilCheck <void> v558 v559
    • v561 (88) = OffPtr <*uint16> [82] v558
    • v562 (88) = Load <uint16> v561 v559
    • v563 (88) = ZeroExt16to64 <uintptr> v562
    • v564 (88) = Mul64 <uintptr> v557 v563 (x[uintptr])
    • v565 (+88) = InlMark <void> [5622] v559
    • v566 (18) = Convert <uintptr> v554 v559
    • v567 (18) = Add64 <uintptr> v566 v564
    • v568 (18) = Convert <unsafe.Pointer> v567 v559 (~R0[unsafe.Pointer])
  • Plainb81 (+88)
  • b80: ← b78
    • v551 (86) = FwdRef <uintptr> {{[] m}} (m[uintptr])
    • v553 (86) = Rsh64Ux64 <uintptr> [false] v551 v552 (m[uintptr])
  • Plainb79 (86)
  • b81: ← b79
    • v569 (88) = FwdRef <unsafe.Pointer> {{[] ~R0}} (~R0[unsafe.Pointer])
    • v570 (88) = Copy <*bmap> v569 (b[*bmap], oldb[*bmap])
    • v571 (89) = FwdRef <mem> {{[] mem}}
    • v572 (+89) = InlMark <void> [5623] v571
    • v573 (205) = NilCheck <void> v570 v571
    • v574 (205) = OffPtr <*[8]uint8> [0] v570
    • v575 (205) = PtrIndex <*uint8> v574 v20
    • v576 (205) = Load <uint8> v575 v571 (h[uint8])
    • v577 (206) = Less8U <bool> v103 v576
  • If v577b83 b82 (206)
  • b82: ← b81 b83
    • v581 (89) = FwdRef <bool> {{[] .autotmp_102}} (~R0[bool])
  • Plainb84 (+89)
  • b83: ← b81
    • v578 (206) = FwdRef <uint8> {{[] h}} (h[uint8])
    • v580 (206) = Less8U <bool> v578 v579
  • Plainb82 (206)
  • b84: ← b82
    • v582 (89) = FwdRef <bool> {{[] ~R0}} (~R0[bool])
  • If v582b85 b86 (89)
  • b85: ← b84 b86
  • Plainb76 (93)
  • b86: ← b84
    • v583 (90) = FwdRef <*bmap> {{[] oldb}} (b[*bmap], oldb[*bmap])
  • Plainb85 (90)
  • b87: ← b76 b88
    • v593 (93) = FwdRef <uint8> {{[] top}} (~R0[uint8], top[uint8])
  • Plainb89 (+93)
  • b88: ← b76
    • v591 (199) = FwdRef <uint8> {{[] top}} (top[uint8])
    • v592 (199) = Add8 <uint8> v591 v579 (top[uint8])
  • Plainb87 (199)
  • b89: ← b87
    • v594 (93) = FwdRef <uint8> {{[] ~R0}} (top[uint8], ~R0[uint8])
  • Plainb90 (94)
  • b90: ← b89 b113
    • v595 (94) = FwdRef <*bmap> {{[] b}} (b[*bmap])
    • v597 (94) = NeqPtr <bool> v595 v596
  • If v597b91 b93 (likely) (94)
  • b91: ← b90
    • v598 (95) = FwdRef <*bmap> {{[] b}} (b[*bmap], b[*bmap])
    • v599 (95) = FwdRef <mem> {{[] mem}}
    • v600 (+95) = InlMark <void> [5626] v599
    • v601 (218) = Copy <unsafe.Pointer> v598 (p[unsafe.Pointer])
    • v602 (+218) = InlMark <void> [5633] v599
    • v603 (18) = Convert <uintptr> v601 v599
    • v604 (18) = Add64 <uintptr> v603 v69
    • v605 (18) = Convert <unsafe.Pointer> v604 v599 (~R0[unsafe.Pointer])
  • Plainb94 (+218)
  • b92: ← b99
    • v689 (94) = FwdRef <*bmap> {{[] b}} (b[*bmap], b[*bmap])
    • v690 (94) = FwdRef <*abi.MapType> {{[] t}} (t[*abi.MapType], t[*abi.MapType])
    • v691 (94) = FwdRef <mem> {{[] mem}}
    • v692 (+94) = InlMark <void> [5625] v691
    • v693 (210) = Copy <unsafe.Pointer> v689 (p[unsafe.Pointer])
    • v694 (210) = NilCheck <void> v690 v691
    • v695 (210) = OffPtr <*uint16> [82] v690
    • v696 (210) = Load <uint16> v695 v691
    • v697 (210) = ZeroExt16to64 <uintptr> v696
    • v698 (210) = Sub64 <uintptr> v697 v69 (x[uintptr])
    • v699 (+210) = InlMark <void> [5632] v691
    • v700 (18) = Convert <uintptr> v693 v691
    • v701 (18) = Add64 <uintptr> v700 v698
    • v702 (18) = Convert <unsafe.Pointer> v701 v691 (~R0[unsafe.Pointer])
  • Plainb112 (+210)
  • b93: ← b90
    • v710 (105) = PtrIndex <*byte> v709 v20
    • v711 (105) = Copy <unsafe.Pointer> v710
    • v713 (105) = FwdRef <mem> {{[] mem}}
    • v712 (105) = MakeResult <unsafe.Pointer,mem> v711 v713
  • Ret v712 (+105)
  • b94: ← b91
    • v606 (95) = FwdRef <unsafe.Pointer> {{[] ~R0}} (~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
  • Plainb95 (+95)
  • b95: ← b94
    • v607 (95) = FwdRef <unsafe.Pointer> {{[] ~R0}} (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
  • Plainb96 (95)
  • b96: ← b95 b111
    • v608 (95) = FwdRef <uintptr> {{[] i}} (i[uintptr])
    • v609 (95) = Less64U <bool> v608 v69
  • If v609b97 b99 (likely) (95)
  • b97: ← b96
    • v610 (96) = FwdRef <unsafe.Pointer> {{[] kptr}} (kptr[unsafe.Pointer])
    • v611 (96) = Copy <*stringStruct> v610 (k[*stringStruct])
    • v612 (97) = FwdRef <mem> {{[] mem}}
    • v613 (97) = NilCheck <void> v611 v612
    • v614 (97) = OffPtr <*int> [8] v611
    • v615 (97) = Load <int> v614 v612
    • v616 (97) = FwdRef <*stringStruct> {{[] key}} (key[*stringStruct])
    • v617 (97) = NilCheck <void> v616 v612
    • v618 (97) = OffPtr <*int> [8] v616
    • v619 (97) = Load <int> v618 v612
    • v620 (97) = Neq64 <bool> v615 v619
  • If v620b100 b101 (97)
  • b98: ← b105 b108
    • v680 (95) = FwdRef <unsafe.Pointer> {{[] kptr}} (p[unsafe.Pointer], kptr[unsafe.Pointer])
    • v681 (95) = FwdRef <mem> {{[] mem}}
    • v682 (+95) = InlMark <void> [5627] v681
    • v683 (18) = Convert <uintptr> v680 v681
    • v684 (18) = Add64 <uintptr> v683 v166
    • v685 (18) = Convert <unsafe.Pointer> v684 v681 (~R0[unsafe.Pointer])
  • Plainb111 (+95)
  • b99: ← b96
  • Plainb92 (94)
  • b100: ← b97 b102
    • v634 (97) = FwdRef <bool> {{[] .autotmp_102}}
  • If v634b105 b104 (97)
  • b101: ← b97
    • v621 (97) = FwdRef <*bmap> {{[] b}} (b[*bmap])
    • v622 (97) = FwdRef <mem> {{[] mem}}
    • v623 (97) = NilCheck <void> v621 v622
    • v624 (97) = OffPtr <*[8]uint8> [0] v621
    • v625 (97) = FwdRef <uintptr> {{[] i}} (i[uintptr])
    • v626 (97) = IsInBounds <bool> v625 v95
  • If v626b102 b103 (likely) (97)
  • b102: ← b101
    • v629 (97) = PtrIndex <*uint8> v624 v625
    • v630 (97) = FwdRef <mem> {{[] mem}}
    • v631 (97) = Load <uint8> v629 v630
    • v632 (97) = FwdRef <uint8> {{[] top}} (top[uint8])
    • v633 (97) = Neq8 <bool> v631 v632
  • Plainb100 (97)
  • b103: ← b101
    • v627 (97) = FwdRef <mem> {{[] mem}}
    • v628 (97) = PanicBounds <mem> [1] v625 v95 v627
  • Exit v628 (97)
  • b104: ← b100
    • v635 (100) = FwdRef <*stringStruct> {{[] k}} (k[*stringStruct])
    • v636 (100) = FwdRef <mem> {{[] mem}}
    • v637 (100) = NilCheck <void> v635 v636
    • v638 (100) = OffPtr <*unsafe.Pointer> [0] v635
    • v639 (100) = Load <unsafe.Pointer> v638 v636
    • v640 (100) = FwdRef <*stringStruct> {{[] key}} (key[*stringStruct])
    • v641 (100) = NilCheck <void> v640 v636
    • v642 (100) = OffPtr <*unsafe.Pointer> [0] v640
    • v643 (100) = Load <unsafe.Pointer> v642 v636
    • v644 (100) = EqPtr <bool> v639 v643
  • If v644b106 b107 (100)
  • b105: ← b100
  • Plainb98 (+98)
  • b106: ← b104 b107
    • v661 (100) = FwdRef <bool> {{[] .autotmp_102}}
  • If v661b109 b108 (100)
  • b107: ← b104
    • v645 (100) = FwdRef <*stringStruct> {{[] k}} (k[*stringStruct])
    • v646 (100) = FwdRef <mem> {{[] mem}}
    • v647 (100) = NilCheck <void> v645 v646
    • v648 (100) = OffPtr <*unsafe.Pointer> [0] v645
    • v649 (100) = Load <unsafe.Pointer> v648 v646
    • v650 (100) = FwdRef <*stringStruct> {{[] key}} (key[*stringStruct])
    • v651 (100) = NilCheck <void> v650 v646
    • v652 (100) = OffPtr <*unsafe.Pointer> [0] v650
    • v653 (100) = Load <unsafe.Pointer> v652 v646
    • v654 (100) = NilCheck <void> v650 v646
    • v655 (100) = OffPtr <*int> [8] v650
    • v656 (100) = Load <int> v655 v646
    • v657 (100) = Copy <uintptr> v656
    • v658 (100) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v649 v653 v657 v646
    • v659 (100) = SelectN <mem> [1] v658
    • v660 (100) = SelectN <bool> [0] v658
  • Plainb106 (100)
  • b108: ← b106
  • Plainb98 (95)
  • b109: ← b106
    • v662 (101) = FwdRef <*bmap> {{[] b}} (b[*bmap])
    • v663 (101) = Copy <unsafe.Pointer> v662 (p[unsafe.Pointer])
    • v664 (101) = FwdRef <uintptr> {{[] i}} (i[uintptr])
    • v665 (101) = FwdRef <*abi.MapType> {{[] t}} (t[*abi.MapType])
    • v666 (101) = FwdRef <mem> {{[] mem}}
    • v667 (101) = NilCheck <void> v665 v666
    • v668 (101) = OffPtr <*uint8> [81] v665
    • v669 (101) = Load <uint8> v668 v666
    • v670 (101) = ZeroExt8to64 <uintptr> v669
    • v671 (101) = Mul64 <uintptr> v664 v670
    • v672 (101) = Add64 <uintptr> v148 v671 (x[uintptr])
    • v673 (+101) = InlMark <void> [5628] v666
    • v674 (18) = Convert <uintptr> v663 v666
    • v675 (18) = Add64 <uintptr> v674 v672
    • v676 (18) = Convert <unsafe.Pointer> v675 v666 (~R0[unsafe.Pointer])
  • Plainb110 (+101)
  • b110: ← b109
    • v677 (101) = FwdRef <unsafe.Pointer> {{[] ~R0}} (~R0[unsafe.Pointer])
    • v679 (101) = FwdRef <mem> {{[] mem}}
    • v678 (101) = MakeResult <unsafe.Pointer,mem> v677 v679
  • Ret v678 (+101)
  • b111: ← b98
    • v686 (95) = FwdRef <uintptr> {{[] i}} (i[uintptr])
    • v687 (95) = Add64 <uintptr> v686 v173 (i[uintptr])
    • v688 (95) = FwdRef <unsafe.Pointer> {{[] ~R0}} (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
  • Plainb96 (95)
  • b112: ← b92
    • v703 (210) = FwdRef <unsafe.Pointer> {{[] ~R0}} (~R0[unsafe.Pointer])
    • v704 (210) = Copy <**bmap> v703
    • v705 (210) = FwdRef <mem> {{[] mem}}
    • v706 (210) = NilCheck <void> v704 v705
    • v707 (210) = Load <*bmap> v704 v705 (~R0[*bmap])
  • Plainb113 (+94)
  • b113: ← b112
    • v708 (94) = FwdRef <*bmap> {{[] ~R0}} (b[*bmap], ~R0[*bmap])
  • Plainb90 (94)
  • name t[*abi.MapType]: v8 v150 v244 v464 v496 v523 v558 v665 v690
  • name h[*hmap]: v9 v15 v29 v47 v53 v490 v516 v535 v541
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v45 v46
  • name key[*stringStruct]: v46 v59 v85 v124 v134 v199 v236 v259 v330 v350 v450 v616 v640 v650
  • name b[*bmap]: v58 v65 v90 v107 v146 v181 v204 v219 v241 v432 v461
  • name b[*bmap]: v65
  • name p[unsafe.Pointer]: v68
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73 v74
  • name ~R0[unsafe.Pointer]: v74 v76
  • name i[uintptr]: v75 v77 v94 v111 v149 v172 v174
  • name kptr[unsafe.Pointer]: v76 v79 v165 v175
  • name k[*stringStruct]: v80 v119 v129
  • name x[uint8]: v101
  • name ~R0[bool]: v104 v105
  • name p[unsafe.Pointer]: v147
  • name x[uintptr]: v157
  • name ~R0[unsafe.Pointer]: v161 v162
  • name p[unsafe.Pointer]: v165
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v171 v175
  • name keymaybe[uintptr]: v69 v418 v420 v430 v434 v463
  • name b[*bmap]: v181
  • name p[unsafe.Pointer]: v184
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188 v189
  • name ~R0[unsafe.Pointer]: v189 v190
  • name i[uintptr]: v75 v191 v208 v223 v243 v420 v427 v428
  • name kptr[unsafe.Pointer]: v190 v193 v421 v429
  • name k[*stringStruct]: v194 v231 v265 v345
  • name x[uint8]: v214
  • name ~R0[bool]: v216 v217
  • name p[unsafe.Pointer]: v242
  • name x[uintptr]: v251
  • name ~R0[unsafe.Pointer]: v255 v256
  • name p[unsafe.Pointer]: v334
  • name x[uintptr]: v340
  • name ~R0[unsafe.Pointer]: v344 v360
  • name p[unsafe.Pointer]: v349
  • name x[uintptr]: v355
  • name ~R0[unsafe.Pointer]: v359 v362
  • name p[unsafe.Pointer]: v421
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v426 v429
  • name p[unsafe.Pointer]: v433
  • name x[uintptr]: v438
  • name ~R0[unsafe.Pointer]: v443 v444
  • name k[*stringStruct]: v445
  • name p[unsafe.Pointer]: v462
  • name x[uintptr]: v471
  • name ~R0[unsafe.Pointer]: v475 v476
  • name p[unsafe.Pointer]: v484
  • name x[uintptr]: v487
  • name ~R0[unsafe.Pointer]: v489 v500
  • name hash[uintptr]: v504 v521 v555 v584
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512 v513
  • name ~R0[uintptr]: v514 v515
  • name m[uintptr]: v515 v551 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532 v533
  • name b[*bmap]: v534 v583 v595 v598 v621 v662 v689 v708
  • name c[unsafe.Pointer]: v539 v554
  • name h[*hmap]: v541
  • name ~R0[bool]: v549 v550
  • name p[unsafe.Pointer]: v554
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568 v569
  • name oldb[*bmap]: v570 v583
  • name b[*bmap]: v570
  • name h[uint8]: v576 v578
  • name ~R0[bool]: v581 v582
  • name hash[uintptr]: v584
  • name top[uint8]: v589 v591 v592 v593
  • name ~R0[uint8]: v593 v594
  • name top[uint8]: v594 v632
  • name b[*bmap]: v598
  • name p[unsafe.Pointer]: v601
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605 v606
  • name ~R0[unsafe.Pointer]: v606 v607
  • name i[uintptr]: v75 v608 v625 v664 v686 v687
  • name kptr[unsafe.Pointer]: v607 v610 v680 v688
  • name k[*stringStruct]: v611 v635 v645
  • name p[unsafe.Pointer]: v663
  • name x[uintptr]: v672
  • name ~R0[unsafe.Pointer]: v676 v677
  • name p[unsafe.Pointer]: v680
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v685 v688
  • name b[*bmap]: v689
  • name t[*abi.MapType]: v690
  • name p[unsafe.Pointer]: v693
  • name x[uintptr]: v698
  • name ~R0[unsafe.Pointer]: v702 v703
  • name ~R0[*bmap]: v707 v708
  • start

    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v4 (?) = LocalAddr <**abi.MapType> {t} v2 v1
      • v5 (?) = LocalAddr <**hmap> {h} v2 v1
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (sp[*string])
      • v7 (?) = LocalAddr <*unsafe.Pointer> {~r0} v2 v1
      • v8 (13) = Arg <*abi.MapType> {t} (t[*abi.MapType])
      • v9 (13) = Arg <*hmap> {h} (h[*hmap])
      • v10 (13) = Arg <string> {ky}
      • v11 (13) = Store <mem> {string} v6 v10 v1
      • v12 (?) = ConstNil <unsafe.Pointer>
      • v13 (?) = ConstNil <*hmap>
      • v14 (18) = EqPtr <bool> v9 v13
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v24 (?) = Const64 <int> [1024]
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v38 (?) = ConstString <string> {"concurrent map read and map write"}
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (keymaybe[uintptr], x[uintptr], x[uintptr], x[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v95 (?) = Const64 <int> [8]
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v166 (?) = Const64 <uintptr> [16] (x[uintptr], x[uintptr], x[uintptr])
      • v173 (?) = Const64 <uintptr> [1]
      • v176 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v271 (?) = Const64 <int> [4]
      • v277 (?) = Const64 <int> [1]
      • v282 (?) = Const64 <uint> [8]
      • v286 (?) = Const64 <int> [2]
      • v291 (?) = Const64 <uint> [16]
      • v295 (?) = Const64 <int> [3]
      • v300 (?) = Const64 <uint> [24]
      • v339 (?) = Const64 <uintptr> [4]
      • v435 (?) = Const64 <uintptr> [2]
      • v479 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v596 (?) = ConstNil <*bmap>
      • v709 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
    • If v14b2 b3 (18)
    • b2: ← b1 b3
      • v22 (18) = Phi <bool> v14 v21
      • v818 (19) = Phi <mem> v11 v16
      • v819 (21) = Phi <*hmap> v9 v15 (h[*hmap])
      • v768 (80) = Copy <*abi.MapType> v8 (t[*abi.MapType])
    • If v22b5 b4 (18)
    • b3: ← b1
      • v15 (18) = Copy <*hmap> v9 (h[*hmap])
      • v16 (18) = Copy <mem> v11
      • v17 (18) = NilCheck <void> v15 v16
      • v18 (18) = OffPtr <*int> [0] v15
      • v19 (18) = Load <int> v18 v16
      • v21 (18) = Eq64 <bool> v19 v20
    • Plainb2 (18)
    • b4: ← b2
      • v29 (21) = Copy <*hmap> v819 (h[*hmap])
      • v30 (21) = Copy <mem> v818
      • v31 (21) = NilCheck <void> v29 v30
      • v32 (21) = OffPtr <*uint8> [8] v29
      • v33 (21) = Load <uint8> v32 v30
      • v35 (21) = And8 <uint8> v33 v34
      • v37 (21) = Neq8 <bool> v35 v36
    • If v37b7 b6 (21)
    • b5: ← b2
      • v25 (19) = PtrIndex <*byte> v23 v20
      • v26 (19) = Copy <unsafe.Pointer> v25
      • v28 (19) = Copy <mem> v818
      • v27 (19) = MakeResult <unsafe.Pointer,mem> v26 v28
    • Ret v27 (+19)
    • b6: ← b4 b7
      • v42 (24) = Phi <mem> v30 v41
      • v43 (+24) = InlMark <void> [5605] v42
      • v44 (244) = Copy <unsafe.Pointer> v6
      • v45 (244) = Copy <*stringStruct> v44 (~R0[*stringStruct])
      • v767 (80) = Copy <*abi.MapType> v768 (t[*abi.MapType])
      • v817 (25) = Copy <*hmap> v29 (h[*hmap])
    • Plainb8 (+24)
    • b7: ← b4
      • v39 (22) = Copy <mem> v30
      • v40 (22) = StaticLECall <mem> {AuxCall{runtime.fatal}} [16] v38 v39
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb6 (22)
    • b8: ← b6
      • v46 (24) = Copy <*stringStruct> v45 (~R0[*stringStruct], key[*stringStruct])
      • v47 (25) = Copy <*hmap> v817 (h[*hmap])
      • v48 (25) = Copy <mem> v42
      • v49 (25) = NilCheck <void> v47 v48
      • v50 (25) = OffPtr <*uint8> [9] v47
      • v51 (25) = Load <uint8> v50 v48
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb64 (80)
    • b10: ← b8
      • v53 (27) = Copy <*hmap> v47 (h[*hmap])
      • v54 (27) = Copy <mem> v48
      • v55 (27) = NilCheck <void> v53 v54
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v53
      • v57 (27) = Load <unsafe.Pointer> v56 v54
      • v58 (27) = Copy <*bmap> v57 (b[*bmap])
      • v59 (28) = Copy <*stringStruct> v46 (key[*stringStruct])
      • v60 (28) = NilCheck <void> v59 v54
      • v61 (28) = OffPtr <*int> [8] v59
      • v62 (28) = Load <int> v61 v54
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b12 b11 (28)
    • b11: ← b10
      • v181 (46) = Copy <*bmap> v58 (b[*bmap], b[*bmap])
      • v182 (46) = Copy <mem> v54
      • v183 (+46) = InlMark <void> [5610] v182
      • v184 (218) = Copy <unsafe.Pointer> v181 (p[unsafe.Pointer])
      • v185 (+218) = InlMark <void> [5630] v182
      • v186 (18) = Convert <uintptr> v184 v182
      • v187 (18) = Add64 <uintptr> v186 v69
      • v188 (18) = Convert <unsafe.Pointer> v187 v182 (~R0[unsafe.Pointer])
    • Plainb36 (+218)
    • b12: ← b10
      • v65 (30) = Copy <*bmap> v58 (b[*bmap], b[*bmap])
      • v66 (30) = Copy <mem> v54
      • v67 (+30) = InlMark <void> [5606] v66
      • v68 (218) = Copy <unsafe.Pointer> v65 (p[unsafe.Pointer])
      • v70 (+218) = InlMark <void> [5629] v66
      • v71 (18) = Convert <uintptr> v68 v66
      • v72 (18) = Add64 <uintptr> v71 v69
      • v73 (18) = Convert <unsafe.Pointer> v72 v66 (~R0[unsafe.Pointer])
    • Plainb13 (+218)
    • b13: ← b12
      • v74 (30) = Copy <unsafe.Pointer> v73 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb14 (+30)
    • b14: ← b13
      • v76 (30) = Copy <unsafe.Pointer> v74 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb15 (30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v801 (39) = Phi <*abi.MapType> v767 v802 (t[*abi.MapType])
      • v805 (39) = Phi <*bmap> v65 v806 (b[*bmap])
      • v810 (42) = Phi <mem> v66 v167
      • v813 (32) = Phi <*stringStruct> v59 v814 (key[*stringStruct])
      • v816 (31) = Phi <unsafe.Pointer> v76 v175 (kptr[unsafe.Pointer])
      • v78 (30) = Less64U <bool> v77 v69
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v79 (31) = Copy <unsafe.Pointer> v816 (kptr[unsafe.Pointer])
      • v80 (31) = Copy <*stringStruct> v79 (k[*stringStruct])
      • v81 (32) = Copy <mem> v810
      • v82 (32) = NilCheck <void> v80 v81
      • v83 (32) = OffPtr <*int> [8] v80
      • v84 (32) = Load <int> v83 v81
      • v85 (32) = Copy <*stringStruct> v813 (key[*stringStruct])
      • v86 (32) = NilCheck <void> v85 v81
      • v87 (32) = OffPtr <*int> [8] v85
      • v88 (32) = Load <int> v87 v81
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b19 b20 (32)
    • b17: ← b26 b32
      • v165 (30) = Phi <unsafe.Pointer> v811 v812 (p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v167 (30) = Phi <mem> v116 v798
      • v795 (30) = Phi <uintptr> v111 v796 (i[uintptr])
      • v802 (39) = Phi <*abi.MapType> v800 v799 (t[*abi.MapType])
      • v806 (39) = Phi <*bmap> v107 v803 (b[*bmap])
      • v814 (32) = Phi <*stringStruct> v808 v815 (key[*stringStruct])
      • v168 (+30) = InlMark <void> [5607] v167
      • v169 (18) = Convert <uintptr> v165 v167
      • v170 (18) = Add64 <uintptr> v169 v166
      • v171 (18) = Convert <unsafe.Pointer> v170 v167 (~R0[unsafe.Pointer])
    • Plainb35 (+30)
    • b18: ← b15 b27
      • v180 (42) = Phi <mem> v810 v116
      • v177 (42) = PtrIndex <*byte> v176 v20
      • v178 (42) = Copy <unsafe.Pointer> v177
      • v179 (42) = MakeResult <unsafe.Pointer,mem> v178 v180
    • Ret v179 (+42)
    • b19: ← b16 b23
      • v106 (32) = Phi <bool> v89 v105
      • v797 (30) = Phi <uintptr> v77 v94 (i[uintptr])
      • v804 (39) = Phi <*bmap> v805 v90 (b[*bmap])
      • v807 (33) = Phi <mem> v81 v100
      • v800 (39) = Copy <*abi.MapType> v801 (t[*abi.MapType])
      • v808 (38) = Copy <*stringStruct> v85 (key[*stringStruct])
      • v809 (38) = Copy <*stringStruct> v80 (k[*stringStruct])
      • v811 (30) = Copy <unsafe.Pointer> v79 (kptr[unsafe.Pointer])
    • If v106b25 b24 (32)
    • b20: ← b16
      • v90 (32) = Copy <*bmap> v805 (b[*bmap])
      • v91 (32) = Copy <mem> v81
      • v92 (32) = NilCheck <void> v90 v91
      • v93 (32) = OffPtr <*[8]uint8> [0] v90
      • v94 (32) = Copy <uintptr> v77 (i[uintptr])
      • v96 (32) = IsInBounds <bool> v94 v95
    • If v96b21 b22 (likely) (32)
    • b21: ← b20
      • v99 (32) = PtrIndex <*uint8> v93 v94
      • v100 (32) = Copy <mem> v91
      • v101 (32) = Load <uint8> v99 v100 (x[uint8])
      • v102 (+32) = InlMark <void> [5608] v100
      • v104 (113) = Leq8U <bool> v101 v103 (~R0[bool])
    • Plainb23 (+32)
    • b22: ← b20
      • v97 (32) = Copy <mem> v91
      • v98 (32) = PanicBounds <mem> [1] v94 v95 v97
    • Exit v98 (32)
    • b23: ← b21
      • v105 (32) = Copy <bool> v104 (~R0[bool])
    • Plainb19 (32)
    • b24: ← b19
      • v119 (38) = Copy <*stringStruct> v809 (k[*stringStruct])
      • v120 (38) = Copy <mem> v807
      • v121 (38) = NilCheck <void> v119 v120
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v119
      • v123 (38) = Load <unsafe.Pointer> v122 v120
      • v124 (38) = Copy <*stringStruct> v808 (key[*stringStruct])
      • v125 (38) = NilCheck <void> v124 v120
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v124
      • v127 (38) = Load <unsafe.Pointer> v126 v120
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b30 b31 (38)
    • b25: ← b19
      • v107 (33) = Copy <*bmap> v804 (b[*bmap])
      • v108 (33) = Copy <mem> v807
      • v109 (33) = NilCheck <void> v107 v108
      • v110 (33) = OffPtr <*[8]uint8> [0] v107
      • v111 (33) = Copy <uintptr> v797 (i[uintptr])
      • v112 (33) = IsInBounds <bool> v111 v95
    • If v112b28 b29 (likely) (33)
    • b26: ← b28
    • Plainb17 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b25
      • v115 (33) = PtrIndex <*uint8> v110 v111
      • v116 (33) = Copy <mem> v108
      • v117 (33) = Load <uint8> v115 v116
      • v118 (33) = Eq8 <bool> v117 v36
    • If v118b27 b26 (33)
    • b29: ← b25
      • v113 (33) = Copy <mem> v108
      • v114 (33) = PanicBounds <mem> [1] v111 v95 v113
    • Exit v114 (33)
    • b30: ← b24 b31
      • v145 (38) = Phi <bool> v128 v144
      • v798 (39) = Phi <mem> v120 v143
      • v815 (32) = Phi <*stringStruct> v124 v134 (key[*stringStruct])
      • v796 (30) = Copy <uintptr> v797 (i[uintptr])
      • v799 (39) = Copy <*abi.MapType> v800 (t[*abi.MapType])
      • v803 (39) = Copy <*bmap> v804 (b[*bmap])
      • v812 (30) = Copy <unsafe.Pointer> v811 (kptr[unsafe.Pointer])
    • If v145b33 b32 (38)
    • b31: ← b24
      • v129 (38) = Copy <*stringStruct> v119 (k[*stringStruct])
      • v130 (38) = Copy <mem> v120
      • v131 (38) = NilCheck <void> v129 v130
      • v132 (38) = OffPtr <*unsafe.Pointer> [0] v129
      • v133 (38) = Load <unsafe.Pointer> v132 v130
      • v134 (38) = Copy <*stringStruct> v124 (key[*stringStruct])
      • v135 (38) = NilCheck <void> v134 v130
      • v136 (38) = OffPtr <*unsafe.Pointer> [0] v134
      • v137 (38) = Load <unsafe.Pointer> v136 v130
      • v138 (38) = NilCheck <void> v134 v130
      • v139 (38) = OffPtr <*int> [8] v134
      • v140 (38) = Load <int> v139 v130
      • v141 (38) = Copy <uintptr> v140
      • v142 (38) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v133 v137 v141 v130
      • v143 (38) = SelectN <mem> [1] v142
      • v144 (38) = SelectN <bool> [0] v142
    • Plainb30 (38)
    • b32: ← b30
    • Plainb17 (30)
    • b33: ← b30
      • v146 (39) = Copy <*bmap> v803 (b[*bmap])
      • v147 (39) = Copy <unsafe.Pointer> v146 (p[unsafe.Pointer])
      • v149 (39) = Copy <uintptr> v796 (i[uintptr])
      • v150 (39) = Copy <*abi.MapType> v799 (t[*abi.MapType])
      • v151 (39) = Copy <mem> v798
      • v152 (39) = NilCheck <void> v150 v151
      • v153 (39) = OffPtr <*uint8> [81] v150
      • v154 (39) = Load <uint8> v153 v151
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v149 v155
      • v157 (39) = Add64 <uintptr> v148 v156 (x[uintptr])
      • v158 (+39) = InlMark <void> [5609] v151
      • v159 (18) = Convert <uintptr> v147 v151
      • v160 (18) = Add64 <uintptr> v159 v157
      • v161 (18) = Convert <unsafe.Pointer> v160 v151 (~R0[unsafe.Pointer])
    • Plainb34 (+39)
    • b34: ← b33
      • v162 (39) = Copy <unsafe.Pointer> v161 (~R0[unsafe.Pointer])
      • v164 (39) = Copy <mem> v151
      • v163 (39) = MakeResult <unsafe.Pointer,mem> v162 v164
    • Ret v163 (+39)
    • b35: ← b17
      • v172 (30) = Copy <uintptr> v795 (i[uintptr])
      • v174 (30) = Add64 <uintptr> v172 v173 (i[uintptr])
      • v175 (30) = Copy <unsafe.Pointer> v171 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb15 (30)
    • b36: ← b11
      • v189 (46) = Copy <unsafe.Pointer> v188 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb37 (+46)
    • b37: ← b36
      • v190 (46) = Copy <unsafe.Pointer> v189 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb38 (46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (i[uintptr])
      • v769 (80) = Phi <*abi.MapType> v767 v770 (t[*abi.MapType])
      • v773 (80) = Phi <*hmap> v53 v774 (h[*hmap])
      • v777 (73) = Phi <*stringStruct> v59 v779 (key[*stringStruct])
      • v781 (72) = Phi <mem> v182 v422
      • v783 (72) = Phi <*bmap> v181 v784 (b[*bmap])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v190 v429 (kptr[unsafe.Pointer])
      • v192 (46) = Less64U <bool> v191 v69
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v193 (47) = Copy <unsafe.Pointer> v794 (kptr[unsafe.Pointer])
      • v194 (47) = Copy <*stringStruct> v193 (k[*stringStruct])
      • v195 (48) = Copy <mem> v781
      • v196 (48) = NilCheck <void> v194 v195
      • v197 (48) = OffPtr <*int> [8] v194
      • v198 (48) = Load <int> v197 v195
      • v199 (48) = Copy <*stringStruct> v777 (key[*stringStruct])
      • v200 (48) = NilCheck <void> v199 v195
      • v201 (48) = OffPtr <*int> [8] v199
      • v202 (48) = Load <int> v201 v195
      • v203 (48) = Neq64 <bool> v198 v202
    • If v203b42 b43 (48)
    • b40: ← b49 b57 b61 b62
      • v422 (46) = Phi <mem> v228 v260 v364 v364
      • v779 (73) = Phi <*stringStruct> v778 v259 v350 v350 (key[*stringStruct])
      • v784 (72) = Phi <*bmap> v219 v785 v785 v785 (b[*bmap])
      • v786 (46) = Phi <uintptr> v223 v787 v787 v420 (i[uintptr])
      • v790 (65) = Phi <uintptr> v788 v788 v788 v420 (keymaybe[uintptr])
      • v421 (46) = Copy <unsafe.Pointer> v793 (kptr[unsafe.Pointer], p[unsafe.Pointer])
      • v423 (+46) = InlMark <void> [5611] v422
      • v424 (18) = Convert <uintptr> v421 v422
      • v425 (18) = Add64 <uintptr> v424 v166
      • v426 (18) = Convert <unsafe.Pointer> v425 v422 (~R0[unsafe.Pointer])
      • v770 (80) = Copy <*abi.MapType> v766 (t[*abi.MapType])
      • v774 (80) = Copy <*hmap> v772 (h[*hmap])
    • Plainb65 (+46)
    • b41: ← b38 b50
      • v430 (71) = Phi <uintptr> v789 v788 (keymaybe[uintptr])
      • v775 (74) = Phi <*abi.MapType> v769 v766 (t[*abi.MapType])
      • v776 (73) = Phi <*stringStruct> v777 v778 (key[*stringStruct])
      • v780 (72) = Phi <mem> v781 v228
      • v782 (72) = Phi <*bmap> v783 v219 (b[*bmap])
      • v431 (71) = Neq64 <bool> v430 v69
    • If v431b67 b66 (71)
    • b42: ← b39 b46
      • v218 (48) = Phi <bool> v203 v217
      • v785 (72) = Phi <*bmap> v783 v204 (b[*bmap])
      • v787 (46) = Phi <uintptr> v191 v208 (i[uintptr])
      • v791 (49) = Phi <mem> v195 v213
      • v766 (80) = Copy <*abi.MapType> v769 (t[*abi.MapType])
      • v772 (80) = Copy <*hmap> v773 (h[*hmap])
      • v778 (73) = Copy <*stringStruct> v199 (key[*stringStruct])
      • v788 (65) = Copy <uintptr> v789 (keymaybe[uintptr])
      • v792 (54) = Copy <*stringStruct> v194 (k[*stringStruct])
      • v793 (46) = Copy <unsafe.Pointer> v193 (kptr[unsafe.Pointer])
    • If v218b48 b47 (48)
    • b43: ← b39
      • v204 (48) = Copy <*bmap> v783 (b[*bmap])
      • v205 (48) = Copy <mem> v195
      • v206 (48) = NilCheck <void> v204 v205
      • v207 (48) = OffPtr <*[8]uint8> [0] v204
      • v208 (48) = Copy <uintptr> v191 (i[uintptr])
      • v209 (48) = IsInBounds <bool> v208 v95
    • If v209b44 b45 (likely) (48)
    • b44: ← b43
      • v212 (48) = PtrIndex <*uint8> v207 v208
      • v213 (48) = Copy <mem> v205
      • v214 (48) = Load <uint8> v212 v213 (x[uint8])
      • v215 (+48) = InlMark <void> [5612] v213
      • v216 (113) = Leq8U <bool> v214 v103 (~R0[bool])
    • Plainb46 (+48)
    • b45: ← b43
      • v210 (48) = Copy <mem> v205
      • v211 (48) = PanicBounds <mem> [1] v208 v95 v210
    • Exit v211 (48)
    • b46: ← b44
      • v217 (48) = Copy <bool> v216 (~R0[bool])
    • Plainb42 (48)
    • b47: ← b42
      • v231 (54) = Copy <*stringStruct> v792 (k[*stringStruct])
      • v232 (54) = Copy <mem> v791
      • v233 (54) = NilCheck <void> v231 v232
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v231
      • v235 (54) = Load <unsafe.Pointer> v234 v232
      • v236 (54) = Copy <*stringStruct> v778 (key[*stringStruct])
      • v237 (54) = NilCheck <void> v236 v232
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v236
      • v239 (54) = Load <unsafe.Pointer> v238 v232
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b54 b53 (54)
    • b48: ← b42
      • v219 (49) = Copy <*bmap> v785 (b[*bmap])
      • v220 (49) = Copy <mem> v791
      • v221 (49) = NilCheck <void> v219 v220
      • v222 (49) = OffPtr <*[8]uint8> [0] v219
      • v223 (49) = Copy <uintptr> v787 (i[uintptr])
      • v224 (49) = IsInBounds <bool> v223 v95
    • If v224b51 b52 (likely) (49)
    • b49: ← b51
    • Plainb40 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b48
      • v227 (49) = PtrIndex <*uint8> v222 v223
      • v228 (49) = Copy <mem> v220
      • v229 (49) = Load <uint8> v227 v228
      • v230 (49) = Eq8 <bool> v229 v36
    • If v230b50 b49 (49)
    • b52: ← b48
      • v225 (49) = Copy <mem> v220
      • v226 (49) = PanicBounds <mem> [1] v223 v95 v225
    • Exit v226 (49)
    • b53: ← b47
      • v259 (58) = Copy <*stringStruct> v236 (key[*stringStruct])
      • v260 (58) = Copy <mem> v232
      • v261 (58) = NilCheck <void> v259 v260
      • v262 (58) = OffPtr <*unsafe.Pointer> [0] v259
      • v263 (58) = Load <unsafe.Pointer> v262 v260
      • v264 (58) = Copy <*[4]byte> v263
      • v265 (58) = Copy <*stringStruct> v231 (k[*stringStruct])
      • v266 (58) = NilCheck <void> v265 v260
      • v267 (58) = OffPtr <*unsafe.Pointer> [0] v265
      • v268 (58) = Load <unsafe.Pointer> v267 v260
      • v269 (58) = Copy <*[4]byte> v268
      • v270 (58) = NilCheck <void> v264 v260
      • v272 (58) = PtrIndex <*byte> v264 v20
      • v273 (58) = Load <byte> v272 v260
      • v274 (58) = Copy <uint8> v273
      • v275 (58) = ZeroExt8to32 <uint32> v274
      • v276 (58) = NilCheck <void> v264 v260
      • v278 (58) = PtrIndex <*byte> v264 v277
      • v279 (58) = Load <byte> v278 v260
      • v280 (58) = Copy <uint8> v279
      • v281 (58) = ZeroExt8to32 <uint32> v280
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v285 (58) = NilCheck <void> v264 v260
      • v287 (58) = PtrIndex <*byte> v264 v286
      • v288 (58) = Load <byte> v287 v260
      • v289 (58) = Copy <uint8> v288
      • v290 (58) = ZeroExt8to32 <uint32> v289
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v294 (58) = NilCheck <void> v264 v260
      • v296 (58) = PtrIndex <*byte> v264 v295
      • v297 (58) = Load <byte> v296 v260
      • v298 (58) = Copy <uint8> v297
      • v299 (58) = ZeroExt8to32 <uint32> v298
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v302 (58) = Or32 <uint32> v293 v301
      • v303 (58) = NilCheck <void> v269 v260
      • v304 (58) = PtrIndex <*byte> v269 v20
      • v305 (58) = Load <byte> v304 v260
      • v306 (58) = Copy <uint8> v305
      • v307 (58) = ZeroExt8to32 <uint32> v306
      • v308 (58) = NilCheck <void> v269 v260
      • v309 (58) = PtrIndex <*byte> v269 v277
      • v310 (58) = Load <byte> v309 v260
      • v311 (58) = Copy <uint8> v310
      • v312 (58) = ZeroExt8to32 <uint32> v311
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v315 (58) = NilCheck <void> v269 v260
      • v316 (58) = PtrIndex <*byte> v269 v286
      • v317 (58) = Load <byte> v316 v260
      • v318 (58) = Copy <uint8> v317
      • v319 (58) = ZeroExt8to32 <uint32> v318
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v322 (58) = NilCheck <void> v269 v260
      • v323 (58) = PtrIndex <*byte> v269 v295
      • v324 (58) = Load <byte> v323 v260
      • v325 (58) = Copy <uint8> v324
      • v326 (58) = ZeroExt8to32 <uint32> v325
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v328 (58) = Or32 <uint32> v321 v327
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b56 (58)
    • b54: ← b47
      • v241 (55) = Copy <*bmap> v785 (b[*bmap])
      • v242 (55) = Copy <unsafe.Pointer> v241 (p[unsafe.Pointer])
      • v243 (55) = Copy <uintptr> v787 (i[uintptr])
      • v244 (55) = Copy <*abi.MapType> v766 (t[*abi.MapType])
      • v245 (55) = Copy <mem> v232
      • v246 (55) = NilCheck <void> v244 v245
      • v247 (55) = OffPtr <*uint8> [81] v244
      • v248 (55) = Load <uint8> v247 v245
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v243 v249
      • v251 (55) = Add64 <uintptr> v148 v250 (x[uintptr])
      • v252 (+55) = InlMark <void> [5613] v245
      • v253 (18) = Convert <uintptr> v242 v245
      • v254 (18) = Add64 <uintptr> v253 v251
      • v255 (18) = Convert <unsafe.Pointer> v254 v245 (~R0[unsafe.Pointer])
    • Plainb55 (+55)
    • b55: ← b54
      • v256 (55) = Copy <unsafe.Pointer> v255 (~R0[unsafe.Pointer])
      • v258 (55) = Copy <mem> v245
      • v257 (55) = MakeResult <unsafe.Pointer,mem> v256 v258
    • Ret v257 (+55)
    • b56: ← b53
      • v330 (62) = Copy <*stringStruct> v259 (key[*stringStruct])
      • v331 (62) = Copy <mem> v260
      • v332 (62) = NilCheck <void> v330 v331
      • v333 (62) = OffPtr <*unsafe.Pointer> [0] v330
      • v334 (62) = Load <unsafe.Pointer> v333 v331 (p[unsafe.Pointer])
      • v335 (62) = NilCheck <void> v330 v331
      • v336 (62) = OffPtr <*int> [8] v330
      • v337 (62) = Load <int> v336 v331
      • v338 (62) = Copy <uintptr> v337
      • v340 (62) = Sub64 <uintptr> v338 v339 (x[uintptr])
      • v341 (+62) = InlMark <void> [5614] v331
      • v342 (18) = Convert <uintptr> v334 v331
      • v343 (18) = Add64 <uintptr> v342 v340
      • v344 (18) = Convert <unsafe.Pointer> v343 v331 (~R0[unsafe.Pointer])
    • Plainb58 (+62)
    • b57: ← b53
    • Plainb40 (+59)
    • b58: ← b56
      • v345 (62) = Copy <*stringStruct> v265 (k[*stringStruct])
      • v346 (62) = Copy <mem> v331
      • v347 (62) = NilCheck <void> v345 v346
      • v348 (62) = OffPtr <*unsafe.Pointer> [0] v345
      • v349 (62) = Load <unsafe.Pointer> v348 v346 (p[unsafe.Pointer])
      • v350 (62) = Copy <*stringStruct> v330 (key[*stringStruct])
      • v351 (62) = NilCheck <void> v350 v346
      • v352 (62) = OffPtr <*int> [8] v350
      • v353 (62) = Load <int> v352 v346
      • v354 (62) = Copy <uintptr> v353
      • v355 (62) = Sub64 <uintptr> v354 v339 (x[uintptr])
      • v356 (+62) = InlMark <void> [5615] v346
      • v357 (18) = Convert <uintptr> v349 v346
      • v358 (18) = Add64 <uintptr> v357 v355
      • v359 (18) = Convert <unsafe.Pointer> v358 v346 (~R0[unsafe.Pointer])
    • Plainb59 (+62)
    • b59: ← b58
      • v360 (62) = Copy <unsafe.Pointer> v344 (~R0[unsafe.Pointer])
      • v361 (62) = Copy <*[4]byte> v360
      • v362 (62) = Copy <unsafe.Pointer> v359 (~R0[unsafe.Pointer])
      • v363 (62) = Copy <*[4]byte> v362
      • v364 (62) = Copy <mem> v346
      • v365 (62) = NilCheck <void> v361 v364
      • v366 (62) = PtrIndex <*byte> v361 v20
      • v367 (62) = Load <byte> v366 v364
      • v368 (62) = Copy <uint8> v367
      • v369 (62) = ZeroExt8to32 <uint32> v368
      • v370 (62) = NilCheck <void> v361 v364
      • v371 (62) = PtrIndex <*byte> v361 v277
      • v372 (62) = Load <byte> v371 v364
      • v373 (62) = Copy <uint8> v372
      • v374 (62) = ZeroExt8to32 <uint32> v373
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v377 (62) = NilCheck <void> v361 v364
      • v378 (62) = PtrIndex <*byte> v361 v286
      • v379 (62) = Load <byte> v378 v364
      • v380 (62) = Copy <uint8> v379
      • v381 (62) = ZeroExt8to32 <uint32> v380
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v376 v382
      • v384 (62) = NilCheck <void> v361 v364
      • v385 (62) = PtrIndex <*byte> v361 v295
      • v386 (62) = Load <byte> v385 v364
      • v387 (62) = Copy <uint8> v386
      • v388 (62) = ZeroExt8to32 <uint32> v387
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v390 (62) = Or32 <uint32> v383 v389
      • v391 (62) = NilCheck <void> v363 v364
      • v392 (62) = PtrIndex <*byte> v363 v20
      • v393 (62) = Load <byte> v392 v364
      • v394 (62) = Copy <uint8> v393
      • v395 (62) = ZeroExt8to32 <uint32> v394
      • v396 (62) = NilCheck <void> v363 v364
      • v397 (62) = PtrIndex <*byte> v363 v277
      • v398 (62) = Load <byte> v397 v364
      • v399 (62) = Copy <uint8> v398
      • v400 (62) = ZeroExt8to32 <uint32> v399
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v403 (62) = NilCheck <void> v363 v364
      • v404 (62) = PtrIndex <*byte> v363 v286
      • v405 (62) = Load <byte> v404 v364
      • v406 (62) = Copy <uint8> v405
      • v407 (62) = ZeroExt8to32 <uint32> v406
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v402 v408
      • v410 (62) = NilCheck <void> v363 v364
      • v411 (62) = PtrIndex <*byte> v363 v295
      • v412 (62) = Load <byte> v411 v364
      • v413 (62) = Copy <uint8> v412
      • v414 (62) = ZeroExt8to32 <uint32> v413
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v416 (62) = Or32 <uint32> v409 v415
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v418 (65) = Copy <uintptr> v788 (keymaybe[uintptr])
      • v419 (65) = Neq64 <bool> v418 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb40 (+63)
    • b62: ← b60
      • v420 (69) = Copy <uintptr> v787 (i[uintptr], keymaybe[uintptr])
    • Plainb40 (69)
    • b63: ← b60
    • Plainb64 (+67)
    • b64: ← b63 b9
      • v485 (80) = Phi <mem> v364 v48
      • v747 (97) = Phi <*stringStruct> v350 v46 (key[*stringStruct])
      • v765 (80) = Phi <*abi.MapType> v766 v767 (t[*abi.MapType])
      • v771 (80) = Phi <*hmap> v772 v47 (h[*hmap])
      • v484 (80) = Copy <unsafe.Pointer> v6 (p[unsafe.Pointer])
      • v486 (+80) = InlMark <void> [5618] v485
      • v487 (221) = Convert <uintptr> v484 v485 (x[uintptr])
      • v488 (222) = Xor64 <uintptr> v487 v75
      • v489 (222) = Convert <unsafe.Pointer> v488 v485 (~R0[unsafe.Pointer])
    • Plainb72 (+80)
    • b65: ← b40
      • v427 (46) = Copy <uintptr> v786 (i[uintptr])
      • v428 (46) = Add64 <uintptr> v427 v173 (i[uintptr])
      • v429 (46) = Copy <unsafe.Pointer> v426 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v780 v459
      • v480 (77) = PtrIndex <*byte> v479 v20
      • v481 (77) = Copy <unsafe.Pointer> v480
      • v482 (77) = MakeResult <unsafe.Pointer,mem> v481 v483
    • Ret v482 (+77)
    • b67: ← b41
      • v432 (72) = Copy <*bmap> v782 (b[*bmap])
      • v433 (72) = Copy <unsafe.Pointer> v432 (p[unsafe.Pointer])
      • v434 (72) = Copy <uintptr> v430 (keymaybe[uintptr])
      • v436 (72) = Mul64 <uintptr> v434 v435
      • v437 (72) = Mul64 <uintptr> v436 v69
      • v438 (72) = Add64 <uintptr> v69 v437 (x[uintptr])
      • v439 (72) = Copy <mem> v780
      • v440 (+72) = InlMark <void> [5616] v439
      • v441 (18) = Convert <uintptr> v433 v439
      • v442 (18) = Add64 <uintptr> v441 v438
      • v443 (18) = Convert <unsafe.Pointer> v442 v439 (~R0[unsafe.Pointer])
    • Plainb68 (+72)
    • b68: ← b67
      • v444 (72) = Copy <unsafe.Pointer> v443 (~R0[unsafe.Pointer])
      • v445 (72) = Copy <*stringStruct> v444 (k[*stringStruct])
      • v446 (73) = Copy <mem> v439
      • v447 (73) = NilCheck <void> v445 v446
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v445
      • v449 (73) = Load <unsafe.Pointer> v448 v446
      • v450 (73) = Copy <*stringStruct> v776 (key[*stringStruct])
      • v451 (73) = NilCheck <void> v450 v446
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v450
      • v453 (73) = Load <unsafe.Pointer> v452 v446
      • v454 (73) = NilCheck <void> v450 v446
      • v455 (73) = OffPtr <*int> [8] v450
      • v456 (73) = Load <int> v455 v446
      • v457 (73) = Copy <uintptr> v456
      • v458 (73) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v457 v446
      • v459 (73) = SelectN <mem> [1] v458
      • v460 (73) = SelectN <bool> [0] v458
    • If v460b70 b69 (73)
    • b69: ← b68
    • Plainb66 (77)
    • b70: ← b68
      • v461 (74) = Copy <*bmap> v432 (b[*bmap])
      • v462 (74) = Copy <unsafe.Pointer> v461 (p[unsafe.Pointer])
      • v463 (74) = Copy <uintptr> v434 (keymaybe[uintptr])
      • v464 (74) = Copy <*abi.MapType> v775 (t[*abi.MapType])
      • v465 (74) = Copy <mem> v459
      • v466 (74) = NilCheck <void> v464 v465
      • v467 (74) = OffPtr <*uint8> [81] v464
      • v468 (74) = Load <uint8> v467 v465
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v463 v469
      • v471 (74) = Add64 <uintptr> v148 v470 (x[uintptr])
      • v472 (+74) = InlMark <void> [5617] v465
      • v473 (18) = Convert <uintptr> v462 v465
      • v474 (18) = Add64 <uintptr> v473 v471
      • v475 (18) = Convert <unsafe.Pointer> v474 v465 (~R0[unsafe.Pointer])
    • Plainb71 (+74)
    • b71: ← b70
      • v476 (74) = Copy <unsafe.Pointer> v475 (~R0[unsafe.Pointer])
      • v478 (74) = Copy <mem> v465
      • v477 (74) = MakeResult <unsafe.Pointer,mem> v476 v478
    • Ret v477 (+74)
    • b72: ← b64
      • v490 (80) = Copy <*hmap> v771 (h[*hmap])
      • v491 (80) = Copy <mem> v485
      • v492 (80) = NilCheck <void> v490 v491
      • v493 (80) = OffPtr <*uint32> [12] v490
      • v494 (80) = Load <uint32> v493 v491
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v496 (80) = Copy <*abi.MapType> v765 (t[*abi.MapType])
      • v497 (80) = NilCheck <void> v496 v491
      • v498 (80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v496
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v491
      • v500 (80) = Copy <unsafe.Pointer> v489 (~R0[unsafe.Pointer])
      • v501 (80) = Load <uintptr> v499 v491
      • v502 (80) = ClosureLECall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v500 v495 v491
      • v503 (80) = SelectN <mem> [1] v502
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr])
      • v505 (81) = NilCheck <void> v490 v503
      • v506 (81) = OffPtr <*uint8> [9] v490
      • v507 (81) = Load <uint8> v506 v503 (b[uint8], b[uint8])
      • v508 (+81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (187) = And8 <uint8> v507 v510
      • v512 (187) = Lsh64x8 <uintptr> [false] v173 v511 (~R0[uintptr])
    • Plainb73 (+192)
    • b73: ← b72
      • v513 (192) = Copy <uintptr> v512 (~R0[uintptr])
      • v514 (192) = Sub64 <uintptr> v513 v173 (~R0[uintptr])
    • Plainb74 (+81)
    • b74: ← b73
      • v515 (81) = Copy <uintptr> v514 (m[uintptr], ~R0[uintptr])
      • v516 (82) = Copy <*hmap> v490 (h[*hmap])
      • v517 (82) = Copy <mem> v503
      • v518 (82) = NilCheck <void> v516 v517
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v516
      • v520 (82) = Load <unsafe.Pointer> v519 v517 (p[unsafe.Pointer])
      • v521 (82) = Copy <uintptr> v504 (hash[uintptr])
      • v522 (82) = And64 <uintptr> v521 v515
      • v523 (82) = Copy <*abi.MapType> v496 (t[*abi.MapType])
      • v524 (82) = NilCheck <void> v523 v517
      • v525 (82) = OffPtr <*uint16> [82] v523
      • v526 (82) = Load <uint16> v525 v517
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v529 (+82) = InlMark <void> [5620] v517
      • v530 (18) = Convert <uintptr> v520 v517
      • v531 (18) = Add64 <uintptr> v530 v528
      • v532 (18) = Convert <unsafe.Pointer> v531 v517 (~R0[unsafe.Pointer])
    • Plainb75 (+82)
    • b75: ← b74
      • v533 (82) = Copy <unsafe.Pointer> v532 (~R0[unsafe.Pointer])
      • v534 (82) = Copy <*bmap> v533 (b[*bmap])
      • v535 (83) = Copy <*hmap> v516 (h[*hmap])
      • v536 (83) = Copy <mem> v517
      • v537 (83) = NilCheck <void> v535 v536
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v535
      • v539 (83) = Load <unsafe.Pointer> v538 v536 (c[unsafe.Pointer])
      • v540 (83) = NeqPtr <bool> v539 v12
    • If v540b77 b76 (83)
    • b76: ← b75 b85
      • v584 (93) = Phi <uintptr> v521 v763 (hash[uintptr], hash[uintptr])
      • v585 (93) = Phi <mem> v536 v761
      • v724 (101) = Phi <*abi.MapType> v523 v725 (t[*abi.MapType])
      • v746 (97) = Phi <*stringStruct> v747 v748 (key[*stringStruct])
      • v756 (94) = Phi <*bmap> v534 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v585
      • v588 (197) = Rsh64Ux64 <uintptr> [false] v584 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (198) = Less8U <bool> v589 v579
    • If v590b88 b87 (198)
    • b77: ← b75
      • v541 (84) = Copy <*hmap> v535 (h[*hmap], h[*hmap])
      • v542 (84) = Copy <mem> v536
      • v543 (+84) = InlMark <void> [5621] v542
      • v544 (1128) = NilCheck <void> v541 v542
      • v545 (1128) = OffPtr <*uint8> [8] v541
      • v546 (1128) = Load <uint8> v545 v542
      • v548 (1128) = And8 <uint8> v546 v547
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • Plainb78 (+84)
    • b78: ← b77
      • v550 (84) = Copy <bool> v549 (~R0[bool])
    • If v550b79 b80 (84)
    • b79: ← b78 b80
      • v556 (88) = Phi <uintptr> v515 v553 (m[uintptr])
      • v554 (88) = Copy <unsafe.Pointer> v539 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v555 (88) = Copy <uintptr> v521 (hash[uintptr])
      • v557 (88) = And64 <uintptr> v555 v556
      • v558 (88) = Copy <*abi.MapType> v523 (t[*abi.MapType])
      • v559 (88) = Copy <mem> v542
      • v560 (88) = NilCheck <void> v558 v559
      • v561 (88) = OffPtr <*uint16> [82] v558
      • v562 (88) = Load <uint16> v561 v559
      • v563 (88) = ZeroExt16to64 <uintptr> v562
      • v564 (88) = Mul64 <uintptr> v557 v563 (x[uintptr])
      • v565 (+88) = InlMark <void> [5622] v559
      • v566 (18) = Convert <uintptr> v554 v559
      • v567 (18) = Add64 <uintptr> v566 v564
      • v568 (18) = Convert <unsafe.Pointer> v567 v559 (~R0[unsafe.Pointer])
      • v750 (97) = Copy <*stringStruct> v747 (key[*stringStruct])
      • v759 (94) = Copy <*bmap> v534 (b[*bmap])
    • Plainb81 (+88)
    • b80: ← b78
      • v551 (86) = Copy <uintptr> v515 (m[uintptr])
      • v553 (86) = Rsh64Ux64 <uintptr> [false] v551 v552 (m[uintptr])
    • Plainb79 (86)
    • b81: ← b79
      • v569 (88) = Copy <unsafe.Pointer> v568 (~R0[unsafe.Pointer])
      • v570 (88) = Copy <*bmap> v569 (b[*bmap], oldb[*bmap])
      • v571 (89) = Copy <mem> v559
      • v572 (+89) = InlMark <void> [5623] v571
      • v573 (205) = NilCheck <void> v570 v571
      • v574 (205) = OffPtr <*[8]uint8> [0] v570
      • v575 (205) = PtrIndex <*uint8> v574 v20
      • v576 (205) = Load <uint8> v575 v571 (h[uint8])
      • v577 (206) = Less8U <bool> v103 v576
    • If v577b83 b82 (206)
    • b82: ← b81 b83
      • v581 (89) = Phi <bool> v577 v580 (~R0[bool])
      • v726 (101) = Copy <*abi.MapType> v558 (t[*abi.MapType])
      • v749 (97) = Copy <*stringStruct> v750 (key[*stringStruct])
      • v758 (94) = Copy <*bmap> v759 (b[*bmap])
      • v760 (90) = Copy <*bmap> v570 (oldb[*bmap])
      • v762 (93) = Copy <mem> v571
      • v764 (93) = Copy <uintptr> v555 (hash[uintptr])
    • Plainb84 (+89)
    • b83: ← b81
      • v578 (206) = Copy <uint8> v576 (h[uint8])
      • v580 (206) = Less8U <bool> v578 v579
    • Plainb82 (206)
    • b84: ← b82
      • v582 (89) = Copy <bool> v581 (~R0[bool])
    • If v582b85 b86 (89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v758 v583 (b[*bmap])
      • v725 (101) = Copy <*abi.MapType> v726 (t[*abi.MapType])
      • v748 (97) = Copy <*stringStruct> v749 (key[*stringStruct])
      • v761 (93) = Copy <mem> v762
      • v763 (93) = Copy <uintptr> v764 (hash[uintptr])
    • Plainb76 (93)
    • b86: ← b84
      • v583 (90) = Copy <*bmap> v760 (b[*bmap], oldb[*bmap])
    • Plainb85 (90)
    • b87: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (top[uint8], ~R0[uint8])
      • v723 (101) = Copy <*abi.MapType> v724 (t[*abi.MapType])
      • v745 (97) = Copy <*stringStruct> v746 (key[*stringStruct])
      • v754 (105) = Copy <mem> v585
      • v755 (94) = Copy <*bmap> v756 (b[*bmap])
    • Plainb89 (+93)
    • b88: ← b76
      • v591 (199) = Copy <uint8> v589 (top[uint8])
      • v592 (199) = Add8 <uint8> v591 v579 (top[uint8])
    • Plainb87 (199)
    • b89: ← b87
      • v594 (93) = Copy <uint8> v593 (top[uint8], ~R0[uint8])
    • Plainb90 (94)
    • b90: ← b89 b113
      • v595 (94) = Phi <*bmap> v755 v708 (b[*bmap])
      • v721 (101) = Phi <*abi.MapType> v723 v690 (t[*abi.MapType])
      • v735 (97) = Phi <uint8> v594 v734 (top[uint8])
      • v742 (97) = Phi <*stringStruct> v745 v741 (key[*stringStruct])
      • v753 (105) = Phi <mem> v754 v705
      • v597 (94) = NeqPtr <bool> v595 v596
    • If v597b91 b93 (likely) (94)
    • b91: ← b90
      • v598 (95) = Copy <*bmap> v595 (b[*bmap], b[*bmap])
      • v599 (95) = Copy <mem> v753
      • v600 (+95) = InlMark <void> [5626] v599
      • v601 (218) = Copy <unsafe.Pointer> v598 (p[unsafe.Pointer])
      • v602 (+218) = InlMark <void> [5633] v599
      • v603 (18) = Convert <uintptr> v601 v599
      • v604 (18) = Add64 <uintptr> v603 v69
      • v605 (18) = Convert <unsafe.Pointer> v604 v599 (~R0[unsafe.Pointer])
    • Plainb94 (+218)
    • b92: ← b99
      • v689 (94) = Copy <*bmap> v729 (b[*bmap], b[*bmap])
      • v690 (94) = Copy <*abi.MapType> v720 (t[*abi.MapType], t[*abi.MapType])
      • v691 (94) = Copy <mem> v751
      • v692 (+94) = InlMark <void> [5625] v691
      • v693 (210) = Copy <unsafe.Pointer> v689 (p[unsafe.Pointer])
      • v694 (210) = NilCheck <void> v690 v691
      • v695 (210) = OffPtr <*uint16> [82] v690
      • v696 (210) = Load <uint16> v695 v691
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v698 (210) = Sub64 <uintptr> v697 v69 (x[uintptr])
      • v699 (+210) = InlMark <void> [5632] v691
      • v700 (18) = Convert <uintptr> v693 v691
      • v701 (18) = Add64 <uintptr> v700 v698
      • v702 (18) = Convert <unsafe.Pointer> v701 v691 (~R0[unsafe.Pointer])
    • Plainb112 (+210)
    • b93: ← b90
      • v710 (105) = PtrIndex <*byte> v709 v20
      • v711 (105) = Copy <unsafe.Pointer> v710
      • v713 (105) = Copy <mem> v753
      • v712 (105) = MakeResult <unsafe.Pointer,mem> v711 v713
    • Ret v712 (+105)
    • b94: ← b91
      • v606 (95) = Copy <unsafe.Pointer> v605 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb95 (+95)
    • b95: ← b94
      • v607 (95) = Copy <unsafe.Pointer> v606 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v720 (101) = Phi <*abi.MapType> v721 v722 (t[*abi.MapType])
      • v729 (101) = Phi <*bmap> v598 v730 (b[*bmap])
      • v734 (97) = Phi <uint8> v735 v736 (top[uint8])
      • v741 (97) = Phi <*stringStruct> v742 v743 (key[*stringStruct])
      • v751 (97) = Phi <mem> v599 v681
      • v752 (96) = Phi <unsafe.Pointer> v607 v688 (kptr[unsafe.Pointer])
      • v609 (95) = Less64U <bool> v608 v69
    • If v609b97 b99 (likely) (95)
    • b97: ← b96
      • v610 (96) = Copy <unsafe.Pointer> v752 (kptr[unsafe.Pointer])
      • v611 (96) = Copy <*stringStruct> v610 (k[*stringStruct])
      • v612 (97) = Copy <mem> v751
      • v613 (97) = NilCheck <void> v611 v612
      • v614 (97) = OffPtr <*int> [8] v611
      • v615 (97) = Load <int> v614 v612
      • v616 (97) = Copy <*stringStruct> v741 (key[*stringStruct])
      • v617 (97) = NilCheck <void> v616 v612
      • v618 (97) = OffPtr <*int> [8] v616
      • v619 (97) = Load <int> v618 v612
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b100 b101 (97)
    • b98: ← b105 b108
      • v680 (95) = Phi <unsafe.Pointer> v739 v740 (p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v681 (95) = Phi <mem> v732 v717
      • v714 (95) = Phi <uintptr> v715 v716 (i[uintptr])
      • v722 (101) = Phi <*abi.MapType> v719 v718 (t[*abi.MapType])
      • v730 (101) = Phi <*bmap> v728 v727 (b[*bmap])
      • v736 (97) = Phi <uint8> v737 v738 (top[uint8])
      • v743 (97) = Phi <*stringStruct> v731 v744 (key[*stringStruct])
      • v682 (+95) = InlMark <void> [5627] v681
      • v683 (18) = Convert <uintptr> v680 v681
      • v684 (18) = Add64 <uintptr> v683 v166
      • v685 (18) = Convert <unsafe.Pointer> v684 v681 (~R0[unsafe.Pointer])
    • Plainb111 (+95)
    • b99: ← b96
    • Plainb92 (94)
    • b100: ← b97 b102
      • v634 (97) = Phi <bool> v620 v633
      • v715 (95) = Phi <uintptr> v608 v625 (i[uintptr])
      • v728 (101) = Phi <*bmap> v729 v621 (b[*bmap])
      • v732 (100) = Phi <mem> v612 v630
      • v737 (97) = Phi <uint8> v734 v632 (top[uint8])
      • v719 (101) = Copy <*abi.MapType> v720 (t[*abi.MapType])
      • v731 (100) = Copy <*stringStruct> v616 (key[*stringStruct])
      • v733 (100) = Copy <*stringStruct> v611 (k[*stringStruct])
      • v739 (95) = Copy <unsafe.Pointer> v610 (kptr[unsafe.Pointer])
    • If v634b105 b104 (97)
    • b101: ← b97
      • v621 (97) = Copy <*bmap> v729 (b[*bmap])
      • v622 (97) = Copy <mem> v612
      • v623 (97) = NilCheck <void> v621 v622
      • v624 (97) = OffPtr <*[8]uint8> [0] v621
      • v625 (97) = Copy <uintptr> v608 (i[uintptr])
      • v626 (97) = IsInBounds <bool> v625 v95
    • If v626b102 b103 (likely) (97)
    • b102: ← b101
      • v629 (97) = PtrIndex <*uint8> v624 v625
      • v630 (97) = Copy <mem> v622
      • v631 (97) = Load <uint8> v629 v630
      • v632 (97) = Copy <uint8> v734 (top[uint8])
      • v633 (97) = Neq8 <bool> v631 v632
    • Plainb100 (97)
    • b103: ← b101
      • v627 (97) = Copy <mem> v622
      • v628 (97) = PanicBounds <mem> [1] v625 v95 v627
    • Exit v628 (97)
    • b104: ← b100
      • v635 (100) = Copy <*stringStruct> v733 (k[*stringStruct])
      • v636 (100) = Copy <mem> v732
      • v637 (100) = NilCheck <void> v635 v636
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v635
      • v639 (100) = Load <unsafe.Pointer> v638 v636
      • v640 (100) = Copy <*stringStruct> v731 (key[*stringStruct])
      • v641 (100) = NilCheck <void> v640 v636
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v640
      • v643 (100) = Load <unsafe.Pointer> v642 v636
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b106 b107 (100)
    • b105: ← b100
    • Plainb98 (+98)
    • b106: ← b104 b107
      • v661 (100) = Phi <bool> v644 v660
      • v717 (101) = Phi <mem> v636 v659
      • v744 (97) = Phi <*stringStruct> v640 v650 (key[*stringStruct])
      • v716 (95) = Copy <uintptr> v715 (i[uintptr])
      • v718 (101) = Copy <*abi.MapType> v719 (t[*abi.MapType])
      • v727 (101) = Copy <*bmap> v728 (b[*bmap])
      • v738 (97) = Copy <uint8> v737 (top[uint8])
      • v740 (95) = Copy <unsafe.Pointer> v739 (kptr[unsafe.Pointer])
    • If v661b109 b108 (100)
    • b107: ← b104
      • v645 (100) = Copy <*stringStruct> v635 (k[*stringStruct])
      • v646 (100) = Copy <mem> v636
      • v647 (100) = NilCheck <void> v645 v646
      • v648 (100) = OffPtr <*unsafe.Pointer> [0] v645
      • v649 (100) = Load <unsafe.Pointer> v648 v646
      • v650 (100) = Copy <*stringStruct> v640 (key[*stringStruct])
      • v651 (100) = NilCheck <void> v650 v646
      • v652 (100) = OffPtr <*unsafe.Pointer> [0] v650
      • v653 (100) = Load <unsafe.Pointer> v652 v646
      • v654 (100) = NilCheck <void> v650 v646
      • v655 (100) = OffPtr <*int> [8] v650
      • v656 (100) = Load <int> v655 v646
      • v657 (100) = Copy <uintptr> v656
      • v658 (100) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v649 v653 v657 v646
      • v659 (100) = SelectN <mem> [1] v658
      • v660 (100) = SelectN <bool> [0] v658
    • Plainb106 (100)
    • b108: ← b106
    • Plainb98 (95)
    • b109: ← b106
      • v662 (101) = Copy <*bmap> v727 (b[*bmap])
      • v663 (101) = Copy <unsafe.Pointer> v662 (p[unsafe.Pointer])
      • v664 (101) = Copy <uintptr> v716 (i[uintptr])
      • v665 (101) = Copy <*abi.MapType> v718 (t[*abi.MapType])
      • v666 (101) = Copy <mem> v717
      • v667 (101) = NilCheck <void> v665 v666
      • v668 (101) = OffPtr <*uint8> [81] v665
      • v669 (101) = Load <uint8> v668 v666
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v664 v670
      • v672 (101) = Add64 <uintptr> v148 v671 (x[uintptr])
      • v673 (+101) = InlMark <void> [5628] v666
      • v674 (18) = Convert <uintptr> v663 v666
      • v675 (18) = Add64 <uintptr> v674 v672
      • v676 (18) = Convert <unsafe.Pointer> v675 v666 (~R0[unsafe.Pointer])
    • Plainb110 (+101)
    • b110: ← b109
      • v677 (101) = Copy <unsafe.Pointer> v676 (~R0[unsafe.Pointer])
      • v679 (101) = Copy <mem> v666
      • v678 (101) = MakeResult <unsafe.Pointer,mem> v677 v679
    • Ret v678 (+101)
    • b111: ← b98
      • v686 (95) = Copy <uintptr> v714 (i[uintptr])
      • v687 (95) = Add64 <uintptr> v686 v173 (i[uintptr])
      • v688 (95) = Copy <unsafe.Pointer> v685 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb96 (95)
    • b112: ← b92
      • v703 (210) = Copy <unsafe.Pointer> v702 (~R0[unsafe.Pointer])
      • v704 (210) = Copy <**bmap> v703
      • v705 (210) = Copy <mem> v691
      • v706 (210) = NilCheck <void> v704 v705
      • v707 (210) = Load <*bmap> v704 v705 (~R0[*bmap])
    • Plainb113 (+94)
    • b113: ← b112
      • v708 (94) = Copy <*bmap> v707 (~R0[*bmap], b[*bmap])
    • Plainb90 (94)
  • name t[*abi.MapType]: v8 v150 v244 v464 v496 v523 v558 v665 v690 v718 v719 v720 v721 v722 v723 v724 v725 v726 v765 v766 v767 v768 v769 v770 v775 v799 v800 v801 v802
  • name h[*hmap]: v9 v15 v29 v47 v53 v490 v516 v535 v541 v771 v772 v773 v774 v817 v819
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v45 v46
  • name key[*stringStruct]: v46 v59 v85 v124 v134 v199 v236 v259 v330 v350 v450 v616 v640 v650 v731 v741 v742 v743 v744 v745 v746 v747 v748 v749 v750 v776 v777 v778 v779 v808 v813 v814 v815
  • name b[*bmap]: v58 v65 v90 v107 v146 v181 v204 v219 v241 v432 v461 v782 v783 v784 v785 v803 v804 v805 v806
  • name b[*bmap]: v65
  • name p[unsafe.Pointer]: v68
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73 v74
  • name ~R0[unsafe.Pointer]: v74 v76
  • name i[uintptr]: v75 v77 v94 v111 v149 v172 v174 v795 v796 v797
  • name kptr[unsafe.Pointer]: v76 v79 v165 v175 v811 v812 v816
  • name k[*stringStruct]: v80 v119 v129 v809
  • name x[uint8]: v101
  • name ~R0[bool]: v104 v105
  • name p[unsafe.Pointer]: v147
  • name x[uintptr]: v157
  • name ~R0[unsafe.Pointer]: v161 v162
  • name p[unsafe.Pointer]: v165
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v171 v175
  • name keymaybe[uintptr]: v69 v418 v420 v430 v434 v463 v788 v789 v790
  • name b[*bmap]: v181
  • name p[unsafe.Pointer]: v184
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188 v189
  • name ~R0[unsafe.Pointer]: v189 v190
  • name i[uintptr]: v75 v191 v208 v223 v243 v420 v427 v428 v786 v787
  • name kptr[unsafe.Pointer]: v190 v193 v421 v429 v793 v794
  • name k[*stringStruct]: v194 v231 v265 v345 v792
  • name x[uint8]: v214
  • name ~R0[bool]: v216 v217
  • name p[unsafe.Pointer]: v242
  • name x[uintptr]: v251
  • name ~R0[unsafe.Pointer]: v255 v256
  • name p[unsafe.Pointer]: v334
  • name x[uintptr]: v340
  • name ~R0[unsafe.Pointer]: v344 v360
  • name p[unsafe.Pointer]: v349
  • name x[uintptr]: v355
  • name ~R0[unsafe.Pointer]: v359 v362
  • name p[unsafe.Pointer]: v421
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v426 v429
  • name p[unsafe.Pointer]: v433
  • name x[uintptr]: v438
  • name ~R0[unsafe.Pointer]: v443 v444
  • name k[*stringStruct]: v445
  • name p[unsafe.Pointer]: v462
  • name x[uintptr]: v471
  • name ~R0[unsafe.Pointer]: v475 v476
  • name p[unsafe.Pointer]: v484
  • name x[uintptr]: v487
  • name ~R0[unsafe.Pointer]: v489 v500
  • name hash[uintptr]: v504 v521 v555 v584 v763 v764
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512 v513
  • name ~R0[uintptr]: v514 v515
  • name m[uintptr]: v515 v551 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532 v533
  • name b[*bmap]: v534 v583 v595 v598 v621 v662 v689 v708 v727 v728 v729 v730 v755 v756 v757 v758 v759
  • name c[unsafe.Pointer]: v539 v554
  • name h[*hmap]: v541
  • name ~R0[bool]: v549 v550
  • name p[unsafe.Pointer]: v554
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568 v569
  • name oldb[*bmap]: v570 v583 v760
  • name b[*bmap]: v570
  • name h[uint8]: v576 v578
  • name ~R0[bool]: v581 v582
  • name hash[uintptr]: v584
  • name top[uint8]: v589 v591 v592 v593
  • name ~R0[uint8]: v593 v594
  • name top[uint8]: v594 v632 v734 v735 v736 v737 v738
  • name b[*bmap]: v598
  • name p[unsafe.Pointer]: v601
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605 v606
  • name ~R0[unsafe.Pointer]: v606 v607
  • name i[uintptr]: v75 v608 v625 v664 v686 v687 v714 v715 v716
  • name kptr[unsafe.Pointer]: v607 v610 v680 v688 v739 v740 v752
  • name k[*stringStruct]: v611 v635 v645 v733
  • name p[unsafe.Pointer]: v663
  • name x[uintptr]: v672
  • name ~R0[unsafe.Pointer]: v676 v677
  • name p[unsafe.Pointer]: v680
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v685 v688
  • name b[*bmap]: v689
  • name t[*abi.MapType]: v690
  • name p[unsafe.Pointer]: v693
  • name x[uintptr]: v698
  • name ~R0[unsafe.Pointer]: v702 v703
  • name ~R0[*bmap]: v707 v708
  • number lines [84213 ns]

    b1 b1 If b2 b2 If b1->b2 0 b3 b3 Plain b1->b3 1 b5 b5 Ret b2->b5 0 b4 b4 If b2->b4 1 b3->b2 0 b7 b7 Plain b4->b7 0 b6 b6 Plain b4->b6 1 b8 b8 If b6->b8 0 b7->b6 0 b10 b10 If b8->b10 0 b9 b9 Plain b8->b9 1 b64 b64 Plain b9->b64 0 b12 b12 Plain b10->b12 0 b11 b11 Plain b10->b11 1 b36 b36 Plain b11->b36 0 b13 b13 Plain b12->b13 0 b14 b14 Plain b13->b14 0 b15 b15 If b14->b15 0 b16 b16 If b15->b16 0 b18 b18 Ret b15->b18 1 b19 b19 If b16->b19 0 b20 b20 If b16->b20 1 b17 b17 Plain b35 b35 Plain b17->b35 0 b25 b25 If b19->b25 0 b24 b24 If b19->b24 1 b21 b21 Plain b20->b21 0 b22 b22 Exit b20->b22 1 b23 b23 Plain b21->b23 0 b23->b19 0 b30 b30 If b24->b30 0 b31 b31 Plain b24->b31 1 b28 b28 If b25->b28 0 b29 b29 Exit b25->b29 1 b26 b26 Plain b26->b17 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b33 b33 Plain b30->b33 0 b32 b32 Plain b30->b32 1 b31->b30 0 b32->b17 0 b34 b34 Ret b33->b34 0 b35->b15 0 b37 b37 Plain b36->b37 0 b38 b38 If b37->b38 0 b39 b39 If b38->b39 0 b41 b41 If b38->b41 1 b42 b42 If b39->b42 0 b43 b43 If b39->b43 1 b40 b40 Plain b65 b65 Plain b40->b65 0 b67 b67 Plain b41->b67 0 b66 b66 Ret b41->b66 1 b48 b48 If b42->b48 0 b47 b47 If b42->b47 1 b44 b44 Plain b43->b44 0 b45 b45 Exit b43->b45 1 b46 b46 Plain b44->b46 0 b46->b42 0 b54 b54 Plain b47->b54 0 b53 b53 If b47->b53 1 b51 b51 If b48->b51 0 b52 b52 Exit b48->b52 1 b49 b49 Plain b49->b40 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b56 b56 Plain b53->b56 1 b55 b55 Ret b54->b55 0 b58 b58 Plain b56->b58 0 b57->b40 0 b59 b59 If b58->b59 0 b61 b61 Plain b59->b61 0 b60 b60 If b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b40 0 b62->b40 0 b63->b64 0 b72 b72 Plain b64->b72 0 b65->b38 0 b68 b68 If b67->b68 0 b70 b70 Plain b68->b70 0 b69 b69 Plain b68->b69 1 b69->b66 0 b71 b71 Ret b70->b71 0 b73 b73 Plain b72->b73 0 b74 b74 Plain b73->b74 0 b75 b75 If b74->b75 0 b77 b77 Plain b75->b77 0 b76 b76 If b75->b76 1 b88 b88 Plain b76->b88 0 b87 b87 Plain b76->b87 1 b78 b78 If b77->b78 0 b79 b79 Plain b78->b79 0 b80 b80 Plain b78->b80 1 b81 b81 If b79->b81 0 b80->b79 0 b83 b83 Plain b81->b83 0 b82 b82 Plain b81->b82 1 b84 b84 If b82->b84 0 b83->b82 0 b85 b85 Plain b84->b85 0 b86 b86 Plain b84->b86 1 b85->b76 0 b86->b85 0 b89 b89 Plain b87->b89 0 b88->b87 0 b90 b90 If b89->b90 0 b91 b91 Plain b90->b91 0 b93 b93 Ret b90->b93 1 b94 b94 Plain b91->b94 0 b92 b92 Plain b112 b112 Plain b92->b112 0 b95 b95 Plain b94->b95 0 b96 b96 If b95->b96 0 b97 b97 If b96->b97 0 b99 b99 Plain b96->b99 1 b100 b100 If b97->b100 0 b101 b101 If b97->b101 1 b98 b98 Plain b111 b111 Plain b98->b111 0 b99->b92 0 b105 b105 Plain b100->b105 0 b104 b104 If b100->b104 1 b102 b102 Plain b101->b102 0 b103 b103 Exit b101->b103 1 b102->b100 0 b106 b106 If b104->b106 0 b107 b107 Plain b104->b107 1 b105->b98 0 b109 b109 Plain b106->b109 0 b108 b108 Plain b106->b108 1 b107->b106 0 b108->b98 0 b110 b110 Ret b109->b110 0 b111->b96 0 b113 b113 Plain b112->b113 0 b113->b90 0
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v4 (?) = LocalAddr <**abi.MapType> {t} v2 v1
      • v5 (?) = LocalAddr <**hmap> {h} v2 v1
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (sp[*string])
      • v7 (?) = LocalAddr <*unsafe.Pointer> {~r0} v2 v1
      • v8 (13) = Arg <*abi.MapType> {t} (t[*abi.MapType])
      • v9 (13) = Arg <*hmap> {h} (h[*hmap])
      • v10 (13) = Arg <string> {ky}
      • v11 (+13) = Store <mem> {string} v6 v10 v1
      • v12 (?) = ConstNil <unsafe.Pointer>
      • v13 (?) = ConstNil <*hmap>
      • v14 (+18) = EqPtr <bool> v9 v13
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v24 (?) = Const64 <int> [1024]
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v38 (?) = ConstString <string> {"concurrent map read and map write"}
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (x[uintptr], keymaybe[uintptr], x[uintptr], x[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v95 (?) = Const64 <int> [8]
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v166 (?) = Const64 <uintptr> [16] (x[uintptr], x[uintptr], x[uintptr])
      • v173 (?) = Const64 <uintptr> [1]
      • v176 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v271 (?) = Const64 <int> [4]
      • v277 (?) = Const64 <int> [1]
      • v282 (?) = Const64 <uint> [8]
      • v286 (?) = Const64 <int> [2]
      • v291 (?) = Const64 <uint> [16]
      • v295 (?) = Const64 <int> [3]
      • v300 (?) = Const64 <uint> [24]
      • v339 (?) = Const64 <uintptr> [4]
      • v435 (?) = Const64 <uintptr> [2]
      • v479 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v596 (?) = ConstNil <*bmap>
      • v709 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
    • If v14b2 b3 (18)
    • b2: ← b1 b3
      • v22 (18) = Phi <bool> v14 v21
      • v818 (19) = Phi <mem> v11 v16
      • v819 (21) = Phi <*hmap> v9 v15 (h[*hmap])
      • v768 (80) = Copy <*abi.MapType> v8 (t[*abi.MapType])
    • If v22b5 b4 (18)
    • b3: ← b1
      • v15 (18) = Copy <*hmap> v9 (h[*hmap])
      • v16 (18) = Copy <mem> v11
      • v17 (18) = NilCheck <void> v15 v16
      • v18 (18) = OffPtr <*int> [0] v15
      • v19 (18) = Load <int> v18 v16
      • v21 (18) = Eq64 <bool> v19 v20
    • Plainb2 (18)
    • b4: ← b2
      • v29 (21) = Copy <*hmap> v819 (h[*hmap])
      • v30 (21) = Copy <mem> v818
      • v31 (+21) = NilCheck <void> v29 v30
      • v32 (21) = OffPtr <*uint8> [8] v29
      • v33 (21) = Load <uint8> v32 v30
      • v35 (21) = And8 <uint8> v33 v34
      • v37 (21) = Neq8 <bool> v35 v36
    • If v37b7 b6 (21)
    • b5: ← b2
      • v25 (+19) = PtrIndex <*byte> v23 v20
      • v26 (19) = Copy <unsafe.Pointer> v25
      • v28 (19) = Copy <mem> v818
      • v27 (19) = MakeResult <unsafe.Pointer,mem> v26 v28
    • Ret v27 (+19)
    • b6: ← b4 b7
      • v42 (24) = Phi <mem> v30 v41
      • v43 (+24) = InlMark <void> [5605] v42
      • v44 (244) = Copy <unsafe.Pointer> v6
      • v45 (244) = Copy <*stringStruct> v44 (~R0[*stringStruct])
      • v767 (80) = Copy <*abi.MapType> v768 (t[*abi.MapType])
      • v817 (25) = Copy <*hmap> v29 (h[*hmap])
    • Plainb8 (+24)
    • b7: ← b4
      • v39 (22) = Copy <mem> v30
      • v40 (+22) = StaticLECall <mem> {AuxCall{runtime.fatal}} [16] v38 v39
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb6 (22)
    • b8: ← b6
      • v46 (24) = Copy <*stringStruct> v45 (~R0[*stringStruct], key[*stringStruct])
      • v47 (25) = Copy <*hmap> v817 (h[*hmap])
      • v48 (25) = Copy <mem> v42
      • v49 (+25) = NilCheck <void> v47 v48
      • v50 (25) = OffPtr <*uint8> [9] v47
      • v51 (25) = Load <uint8> v50 v48
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb64 (25)
    • b10: ← b8
      • v53 (27) = Copy <*hmap> v47 (h[*hmap])
      • v54 (27) = Copy <mem> v48
      • v55 (+27) = NilCheck <void> v53 v54
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v53
      • v57 (27) = Load <unsafe.Pointer> v56 v54
      • v58 (27) = Copy <*bmap> v57 (b[*bmap])
      • v59 (28) = Copy <*stringStruct> v46 (key[*stringStruct])
      • v60 (+28) = NilCheck <void> v59 v54
      • v61 (28) = OffPtr <*int> [8] v59
      • v62 (28) = Load <int> v61 v54
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b12 b11 (28)
    • b11: ← b10
      • v181 (46) = Copy <*bmap> v58 (b[*bmap], b[*bmap])
      • v182 (46) = Copy <mem> v54
      • v183 (+46) = InlMark <void> [5610] v182
      • v184 (218) = Copy <unsafe.Pointer> v181 (p[unsafe.Pointer])
      • v185 (+218) = InlMark <void> [5630] v182
      • v186 (+18) = Convert <uintptr> v184 v182
      • v187 (18) = Add64 <uintptr> v186 v69
      • v188 (18) = Convert <unsafe.Pointer> v187 v182 (~R0[unsafe.Pointer])
    • Plainb36 (+218)
    • b12: ← b10
      • v65 (30) = Copy <*bmap> v58 (b[*bmap], b[*bmap])
      • v66 (30) = Copy <mem> v54
      • v67 (+30) = InlMark <void> [5606] v66
      • v68 (218) = Copy <unsafe.Pointer> v65 (p[unsafe.Pointer])
      • v70 (+218) = InlMark <void> [5629] v66
      • v71 (+18) = Convert <uintptr> v68 v66
      • v72 (18) = Add64 <uintptr> v71 v69
      • v73 (18) = Convert <unsafe.Pointer> v72 v66 (~R0[unsafe.Pointer])
    • Plainb13 (+218)
    • b13: ← b12
      • v74 (30) = Copy <unsafe.Pointer> v73 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb14 (+30)
    • b14: ← b13
      • v76 (30) = Copy <unsafe.Pointer> v74 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb15 (30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v801 (39) = Phi <*abi.MapType> v767 v802 (t[*abi.MapType])
      • v805 (39) = Phi <*bmap> v65 v806 (b[*bmap])
      • v810 (42) = Phi <mem> v66 v167
      • v813 (32) = Phi <*stringStruct> v59 v814 (key[*stringStruct])
      • v816 (31) = Phi <unsafe.Pointer> v76 v175 (kptr[unsafe.Pointer])
      • v78 (+30) = Less64U <bool> v77 v69
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v79 (31) = Copy <unsafe.Pointer> v816 (kptr[unsafe.Pointer])
      • v80 (31) = Copy <*stringStruct> v79 (k[*stringStruct])
      • v81 (32) = Copy <mem> v810
      • v82 (+32) = NilCheck <void> v80 v81
      • v83 (32) = OffPtr <*int> [8] v80
      • v84 (32) = Load <int> v83 v81
      • v85 (32) = Copy <*stringStruct> v813 (key[*stringStruct])
      • v86 (32) = NilCheck <void> v85 v81
      • v87 (32) = OffPtr <*int> [8] v85
      • v88 (32) = Load <int> v87 v81
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b19 b20 (32)
    • b17: ← b26 b32
      • v165 (30) = Phi <unsafe.Pointer> v811 v812 (p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v167 (30) = Phi <mem> v116 v798
      • v795 (30) = Phi <uintptr> v111 v796 (i[uintptr])
      • v802 (39) = Phi <*abi.MapType> v800 v799 (t[*abi.MapType])
      • v806 (39) = Phi <*bmap> v107 v803 (b[*bmap])
      • v814 (32) = Phi <*stringStruct> v808 v815 (key[*stringStruct])
      • v168 (+30) = InlMark <void> [5607] v167
      • v169 (+18) = Convert <uintptr> v165 v167
      • v170 (18) = Add64 <uintptr> v169 v166
      • v171 (18) = Convert <unsafe.Pointer> v170 v167 (~R0[unsafe.Pointer])
    • Plainb35 (+30)
    • b18: ← b15 b27
      • v180 (42) = Phi <mem> v810 v116
      • v177 (+42) = PtrIndex <*byte> v176 v20
      • v178 (42) = Copy <unsafe.Pointer> v177
      • v179 (42) = MakeResult <unsafe.Pointer,mem> v178 v180
    • Ret v179 (+42)
    • b19: ← b16 b23
      • v106 (32) = Phi <bool> v89 v105
      • v797 (30) = Phi <uintptr> v77 v94 (i[uintptr])
      • v804 (39) = Phi <*bmap> v805 v90 (b[*bmap])
      • v807 (33) = Phi <mem> v81 v100
      • v800 (39) = Copy <*abi.MapType> v801 (t[*abi.MapType])
      • v808 (38) = Copy <*stringStruct> v85 (key[*stringStruct])
      • v809 (38) = Copy <*stringStruct> v80 (k[*stringStruct])
      • v811 (30) = Copy <unsafe.Pointer> v79 (kptr[unsafe.Pointer])
    • If v106b25 b24 (32)
    • b20: ← b16
      • v90 (32) = Copy <*bmap> v805 (b[*bmap])
      • v91 (32) = Copy <mem> v81
      • v92 (32) = NilCheck <void> v90 v91
      • v93 (32) = OffPtr <*[8]uint8> [0] v90
      • v94 (32) = Copy <uintptr> v77 (i[uintptr])
      • v96 (32) = IsInBounds <bool> v94 v95
    • If v96b21 b22 (likely) (32)
    • b21: ← b20
      • v99 (32) = PtrIndex <*uint8> v93 v94
      • v100 (32) = Copy <mem> v91
      • v101 (32) = Load <uint8> v99 v100 (x[uint8])
      • v102 (32) = InlMark <void> [5608] v100
      • v104 (+113) = Leq8U <bool> v101 v103 (~R0[bool])
    • Plainb23 (+32)
    • b22: ← b20
      • v97 (32) = Copy <mem> v91
      • v98 (32) = PanicBounds <mem> [1] v94 v95 v97
    • Exit v98 (32)
    • b23: ← b21
      • v105 (32) = Copy <bool> v104 (~R0[bool])
    • Plainb19 (32)
    • b24: ← b19
      • v119 (38) = Copy <*stringStruct> v809 (k[*stringStruct])
      • v120 (38) = Copy <mem> v807
      • v121 (+38) = NilCheck <void> v119 v120
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v119
      • v123 (38) = Load <unsafe.Pointer> v122 v120
      • v124 (38) = Copy <*stringStruct> v808 (key[*stringStruct])
      • v125 (38) = NilCheck <void> v124 v120
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v124
      • v127 (38) = Load <unsafe.Pointer> v126 v120
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b30 b31 (38)
    • b25: ← b19
      • v107 (33) = Copy <*bmap> v804 (b[*bmap])
      • v108 (33) = Copy <mem> v807
      • v109 (+33) = NilCheck <void> v107 v108
      • v110 (33) = OffPtr <*[8]uint8> [0] v107
      • v111 (33) = Copy <uintptr> v797 (i[uintptr])
      • v112 (33) = IsInBounds <bool> v111 v95
    • If v112b28 b29 (likely) (33)
    • b26: ← b28
    • Plainb17 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b25
      • v115 (33) = PtrIndex <*uint8> v110 v111
      • v116 (33) = Copy <mem> v108
      • v117 (33) = Load <uint8> v115 v116
      • v118 (33) = Eq8 <bool> v117 v36
    • If v118b27 b26 (33)
    • b29: ← b25
      • v113 (33) = Copy <mem> v108
      • v114 (33) = PanicBounds <mem> [1] v111 v95 v113
    • Exit v114 (33)
    • b30: ← b24 b31
      • v145 (38) = Phi <bool> v128 v144
      • v798 (39) = Phi <mem> v120 v143
      • v815 (32) = Phi <*stringStruct> v124 v134 (key[*stringStruct])
      • v796 (30) = Copy <uintptr> v797 (i[uintptr])
      • v799 (39) = Copy <*abi.MapType> v800 (t[*abi.MapType])
      • v803 (39) = Copy <*bmap> v804 (b[*bmap])
      • v812 (30) = Copy <unsafe.Pointer> v811 (kptr[unsafe.Pointer])
    • If v145b33 b32 (38)
    • b31: ← b24
      • v129 (38) = Copy <*stringStruct> v119 (k[*stringStruct])
      • v130 (38) = Copy <mem> v120
      • v131 (38) = NilCheck <void> v129 v130
      • v132 (38) = OffPtr <*unsafe.Pointer> [0] v129
      • v133 (38) = Load <unsafe.Pointer> v132 v130
      • v134 (38) = Copy <*stringStruct> v124 (key[*stringStruct])
      • v135 (38) = NilCheck <void> v134 v130
      • v136 (38) = OffPtr <*unsafe.Pointer> [0] v134
      • v137 (38) = Load <unsafe.Pointer> v136 v130
      • v138 (38) = NilCheck <void> v134 v130
      • v139 (38) = OffPtr <*int> [8] v134
      • v140 (38) = Load <int> v139 v130
      • v141 (38) = Copy <uintptr> v140
      • v142 (38) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v133 v137 v141 v130
      • v143 (38) = SelectN <mem> [1] v142
      • v144 (38) = SelectN <bool> [0] v142
    • Plainb30 (38)
    • b32: ← b30
    • Plainb17 (38)
    • b33: ← b30
      • v146 (39) = Copy <*bmap> v803 (b[*bmap])
      • v147 (39) = Copy <unsafe.Pointer> v146 (p[unsafe.Pointer])
      • v149 (39) = Copy <uintptr> v796 (i[uintptr])
      • v150 (39) = Copy <*abi.MapType> v799 (t[*abi.MapType])
      • v151 (39) = Copy <mem> v798
      • v152 (+39) = NilCheck <void> v150 v151
      • v153 (39) = OffPtr <*uint8> [81] v150
      • v154 (39) = Load <uint8> v153 v151
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v149 v155
      • v157 (39) = Add64 <uintptr> v148 v156 (x[uintptr])
      • v158 (39) = InlMark <void> [5609] v151
      • v159 (+18) = Convert <uintptr> v147 v151
      • v160 (18) = Add64 <uintptr> v159 v157
      • v161 (18) = Convert <unsafe.Pointer> v160 v151 (~R0[unsafe.Pointer])
    • Plainb34 (+39)
    • b34: ← b33
      • v162 (39) = Copy <unsafe.Pointer> v161 (~R0[unsafe.Pointer])
      • v164 (39) = Copy <mem> v151
      • v163 (39) = MakeResult <unsafe.Pointer,mem> v162 v164
    • Ret v163 (+39)
    • b35: ← b17
      • v172 (30) = Copy <uintptr> v795 (i[uintptr])
      • v174 (30) = Add64 <uintptr> v172 v173 (i[uintptr])
      • v175 (30) = Copy <unsafe.Pointer> v171 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb15 (30)
    • b36: ← b11
      • v189 (46) = Copy <unsafe.Pointer> v188 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb37 (+46)
    • b37: ← b36
      • v190 (46) = Copy <unsafe.Pointer> v189 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (i[uintptr])
      • v769 (80) = Phi <*abi.MapType> v767 v770 (t[*abi.MapType])
      • v773 (80) = Phi <*hmap> v53 v774 (h[*hmap])
      • v777 (73) = Phi <*stringStruct> v59 v779 (key[*stringStruct])
      • v781 (72) = Phi <mem> v182 v422
      • v783 (72) = Phi <*bmap> v181 v784 (b[*bmap])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v190 v429 (kptr[unsafe.Pointer])
      • v192 (+46) = Less64U <bool> v191 v69
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v193 (47) = Copy <unsafe.Pointer> v794 (kptr[unsafe.Pointer])
      • v194 (47) = Copy <*stringStruct> v193 (k[*stringStruct])
      • v195 (48) = Copy <mem> v781
      • v196 (+48) = NilCheck <void> v194 v195
      • v197 (48) = OffPtr <*int> [8] v194
      • v198 (48) = Load <int> v197 v195
      • v199 (48) = Copy <*stringStruct> v777 (key[*stringStruct])
      • v200 (48) = NilCheck <void> v199 v195
      • v201 (48) = OffPtr <*int> [8] v199
      • v202 (48) = Load <int> v201 v195
      • v203 (48) = Neq64 <bool> v198 v202
    • If v203b42 b43 (48)
    • b40: ← b49 b57 b61 b62
      • v422 (46) = Phi <mem> v228 v260 v364 v364
      • v779 (73) = Phi <*stringStruct> v778 v259 v350 v350 (key[*stringStruct])
      • v784 (72) = Phi <*bmap> v219 v785 v785 v785 (b[*bmap])
      • v786 (46) = Phi <uintptr> v223 v787 v787 v420 (i[uintptr])
      • v790 (65) = Phi <uintptr> v788 v788 v788 v420 (keymaybe[uintptr])
      • v421 (46) = Copy <unsafe.Pointer> v793 (p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v423 (+46) = InlMark <void> [5611] v422
      • v424 (+18) = Convert <uintptr> v421 v422
      • v425 (18) = Add64 <uintptr> v424 v166
      • v426 (18) = Convert <unsafe.Pointer> v425 v422 (~R0[unsafe.Pointer])
      • v770 (80) = Copy <*abi.MapType> v766 (t[*abi.MapType])
      • v774 (80) = Copy <*hmap> v772 (h[*hmap])
    • Plainb65 (+46)
    • b41: ← b38 b50
      • v430 (71) = Phi <uintptr> v789 v788 (keymaybe[uintptr])
      • v775 (74) = Phi <*abi.MapType> v769 v766 (t[*abi.MapType])
      • v776 (73) = Phi <*stringStruct> v777 v778 (key[*stringStruct])
      • v780 (72) = Phi <mem> v781 v228
      • v782 (72) = Phi <*bmap> v783 v219 (b[*bmap])
      • v431 (+71) = Neq64 <bool> v430 v69
    • If v431b67 b66 (71)
    • b42: ← b39 b46
      • v218 (48) = Phi <bool> v203 v217
      • v785 (72) = Phi <*bmap> v783 v204 (b[*bmap])
      • v787 (46) = Phi <uintptr> v191 v208 (i[uintptr])
      • v791 (49) = Phi <mem> v195 v213
      • v766 (80) = Copy <*abi.MapType> v769 (t[*abi.MapType])
      • v772 (80) = Copy <*hmap> v773 (h[*hmap])
      • v778 (73) = Copy <*stringStruct> v199 (key[*stringStruct])
      • v788 (65) = Copy <uintptr> v789 (keymaybe[uintptr])
      • v792 (54) = Copy <*stringStruct> v194 (k[*stringStruct])
      • v793 (46) = Copy <unsafe.Pointer> v193 (kptr[unsafe.Pointer])
    • If v218b48 b47 (48)
    • b43: ← b39
      • v204 (48) = Copy <*bmap> v783 (b[*bmap])
      • v205 (48) = Copy <mem> v195
      • v206 (48) = NilCheck <void> v204 v205
      • v207 (48) = OffPtr <*[8]uint8> [0] v204
      • v208 (48) = Copy <uintptr> v191 (i[uintptr])
      • v209 (48) = IsInBounds <bool> v208 v95
    • If v209b44 b45 (likely) (48)
    • b44: ← b43
      • v212 (48) = PtrIndex <*uint8> v207 v208
      • v213 (48) = Copy <mem> v205
      • v214 (48) = Load <uint8> v212 v213 (x[uint8])
      • v215 (48) = InlMark <void> [5612] v213
      • v216 (+113) = Leq8U <bool> v214 v103 (~R0[bool])
    • Plainb46 (+48)
    • b45: ← b43
      • v210 (48) = Copy <mem> v205
      • v211 (48) = PanicBounds <mem> [1] v208 v95 v210
    • Exit v211 (48)
    • b46: ← b44
      • v217 (48) = Copy <bool> v216 (~R0[bool])
    • Plainb42 (48)
    • b47: ← b42
      • v231 (54) = Copy <*stringStruct> v792 (k[*stringStruct])
      • v232 (54) = Copy <mem> v791
      • v233 (+54) = NilCheck <void> v231 v232
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v231
      • v235 (54) = Load <unsafe.Pointer> v234 v232
      • v236 (54) = Copy <*stringStruct> v778 (key[*stringStruct])
      • v237 (54) = NilCheck <void> v236 v232
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v236
      • v239 (54) = Load <unsafe.Pointer> v238 v232
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b54 b53 (54)
    • b48: ← b42
      • v219 (49) = Copy <*bmap> v785 (b[*bmap])
      • v220 (49) = Copy <mem> v791
      • v221 (+49) = NilCheck <void> v219 v220
      • v222 (49) = OffPtr <*[8]uint8> [0] v219
      • v223 (49) = Copy <uintptr> v787 (i[uintptr])
      • v224 (49) = IsInBounds <bool> v223 v95
    • If v224b51 b52 (likely) (49)
    • b49: ← b51
    • Plainb40 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b48
      • v227 (49) = PtrIndex <*uint8> v222 v223
      • v228 (49) = Copy <mem> v220
      • v229 (49) = Load <uint8> v227 v228
      • v230 (49) = Eq8 <bool> v229 v36
    • If v230b50 b49 (49)
    • b52: ← b48
      • v225 (49) = Copy <mem> v220
      • v226 (49) = PanicBounds <mem> [1] v223 v95 v225
    • Exit v226 (49)
    • b53: ← b47
      • v259 (58) = Copy <*stringStruct> v236 (key[*stringStruct])
      • v260 (58) = Copy <mem> v232
      • v261 (+58) = NilCheck <void> v259 v260
      • v262 (58) = OffPtr <*unsafe.Pointer> [0] v259
      • v263 (58) = Load <unsafe.Pointer> v262 v260
      • v264 (58) = Copy <*[4]byte> v263
      • v265 (58) = Copy <*stringStruct> v231 (k[*stringStruct])
      • v266 (58) = NilCheck <void> v265 v260
      • v267 (58) = OffPtr <*unsafe.Pointer> [0] v265
      • v268 (58) = Load <unsafe.Pointer> v267 v260
      • v269 (58) = Copy <*[4]byte> v268
      • v270 (58) = NilCheck <void> v264 v260
      • v272 (58) = PtrIndex <*byte> v264 v20
      • v273 (58) = Load <byte> v272 v260
      • v274 (58) = Copy <uint8> v273
      • v275 (58) = ZeroExt8to32 <uint32> v274
      • v276 (58) = NilCheck <void> v264 v260
      • v278 (58) = PtrIndex <*byte> v264 v277
      • v279 (58) = Load <byte> v278 v260
      • v280 (58) = Copy <uint8> v279
      • v281 (58) = ZeroExt8to32 <uint32> v280
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v285 (58) = NilCheck <void> v264 v260
      • v287 (58) = PtrIndex <*byte> v264 v286
      • v288 (58) = Load <byte> v287 v260
      • v289 (58) = Copy <uint8> v288
      • v290 (58) = ZeroExt8to32 <uint32> v289
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v294 (58) = NilCheck <void> v264 v260
      • v296 (58) = PtrIndex <*byte> v264 v295
      • v297 (58) = Load <byte> v296 v260
      • v298 (58) = Copy <uint8> v297
      • v299 (58) = ZeroExt8to32 <uint32> v298
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v302 (58) = Or32 <uint32> v293 v301
      • v303 (58) = NilCheck <void> v269 v260
      • v304 (58) = PtrIndex <*byte> v269 v20
      • v305 (58) = Load <byte> v304 v260
      • v306 (58) = Copy <uint8> v305
      • v307 (58) = ZeroExt8to32 <uint32> v306
      • v308 (58) = NilCheck <void> v269 v260
      • v309 (58) = PtrIndex <*byte> v269 v277
      • v310 (58) = Load <byte> v309 v260
      • v311 (58) = Copy <uint8> v310
      • v312 (58) = ZeroExt8to32 <uint32> v311
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v315 (58) = NilCheck <void> v269 v260
      • v316 (58) = PtrIndex <*byte> v269 v286
      • v317 (58) = Load <byte> v316 v260
      • v318 (58) = Copy <uint8> v317
      • v319 (58) = ZeroExt8to32 <uint32> v318
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v322 (58) = NilCheck <void> v269 v260
      • v323 (58) = PtrIndex <*byte> v269 v295
      • v324 (58) = Load <byte> v323 v260
      • v325 (58) = Copy <uint8> v324
      • v326 (58) = ZeroExt8to32 <uint32> v325
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v328 (58) = Or32 <uint32> v321 v327
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b56 (58)
    • b54: ← b47
      • v241 (55) = Copy <*bmap> v785 (b[*bmap])
      • v242 (55) = Copy <unsafe.Pointer> v241 (p[unsafe.Pointer])
      • v243 (55) = Copy <uintptr> v787 (i[uintptr])
      • v244 (55) = Copy <*abi.MapType> v766 (t[*abi.MapType])
      • v245 (55) = Copy <mem> v232
      • v246 (+55) = NilCheck <void> v244 v245
      • v247 (55) = OffPtr <*uint8> [81] v244
      • v248 (55) = Load <uint8> v247 v245
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v243 v249
      • v251 (55) = Add64 <uintptr> v148 v250 (x[uintptr])
      • v252 (55) = InlMark <void> [5613] v245
      • v253 (+18) = Convert <uintptr> v242 v245
      • v254 (18) = Add64 <uintptr> v253 v251
      • v255 (18) = Convert <unsafe.Pointer> v254 v245 (~R0[unsafe.Pointer])
    • Plainb55 (+55)
    • b55: ← b54
      • v256 (55) = Copy <unsafe.Pointer> v255 (~R0[unsafe.Pointer])
      • v258 (55) = Copy <mem> v245
      • v257 (55) = MakeResult <unsafe.Pointer,mem> v256 v258
    • Ret v257 (+55)
    • b56: ← b53
      • v330 (62) = Copy <*stringStruct> v259 (key[*stringStruct])
      • v331 (62) = Copy <mem> v260
      • v332 (+62) = NilCheck <void> v330 v331
      • v333 (62) = OffPtr <*unsafe.Pointer> [0] v330
      • v334 (62) = Load <unsafe.Pointer> v333 v331 (p[unsafe.Pointer])
      • v335 (62) = NilCheck <void> v330 v331
      • v336 (62) = OffPtr <*int> [8] v330
      • v337 (62) = Load <int> v336 v331
      • v338 (62) = Copy <uintptr> v337
      • v340 (62) = Sub64 <uintptr> v338 v339 (x[uintptr])
      • v341 (62) = InlMark <void> [5614] v331
      • v342 (+18) = Convert <uintptr> v334 v331
      • v343 (18) = Add64 <uintptr> v342 v340
      • v344 (18) = Convert <unsafe.Pointer> v343 v331 (~R0[unsafe.Pointer])
    • Plainb58 (+62)
    • b57: ← b53
    • Plainb40 (+59)
    • b58: ← b56
      • v345 (62) = Copy <*stringStruct> v265 (k[*stringStruct])
      • v346 (62) = Copy <mem> v331
      • v347 (62) = NilCheck <void> v345 v346
      • v348 (62) = OffPtr <*unsafe.Pointer> [0] v345
      • v349 (62) = Load <unsafe.Pointer> v348 v346 (p[unsafe.Pointer])
      • v350 (62) = Copy <*stringStruct> v330 (key[*stringStruct])
      • v351 (62) = NilCheck <void> v350 v346
      • v352 (62) = OffPtr <*int> [8] v350
      • v353 (62) = Load <int> v352 v346
      • v354 (62) = Copy <uintptr> v353
      • v355 (62) = Sub64 <uintptr> v354 v339 (x[uintptr])
      • v356 (62) = InlMark <void> [5615] v346
      • v357 (+18) = Convert <uintptr> v349 v346
      • v358 (18) = Add64 <uintptr> v357 v355
      • v359 (18) = Convert <unsafe.Pointer> v358 v346 (~R0[unsafe.Pointer])
    • Plainb59 (+62)
    • b59: ← b58
      • v360 (62) = Copy <unsafe.Pointer> v344 (~R0[unsafe.Pointer])
      • v361 (62) = Copy <*[4]byte> v360
      • v362 (62) = Copy <unsafe.Pointer> v359 (~R0[unsafe.Pointer])
      • v363 (62) = Copy <*[4]byte> v362
      • v364 (62) = Copy <mem> v346
      • v365 (62) = NilCheck <void> v361 v364
      • v366 (62) = PtrIndex <*byte> v361 v20
      • v367 (62) = Load <byte> v366 v364
      • v368 (62) = Copy <uint8> v367
      • v369 (62) = ZeroExt8to32 <uint32> v368
      • v370 (62) = NilCheck <void> v361 v364
      • v371 (62) = PtrIndex <*byte> v361 v277
      • v372 (62) = Load <byte> v371 v364
      • v373 (62) = Copy <uint8> v372
      • v374 (62) = ZeroExt8to32 <uint32> v373
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v377 (62) = NilCheck <void> v361 v364
      • v378 (62) = PtrIndex <*byte> v361 v286
      • v379 (62) = Load <byte> v378 v364
      • v380 (62) = Copy <uint8> v379
      • v381 (62) = ZeroExt8to32 <uint32> v380
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v376 v382
      • v384 (62) = NilCheck <void> v361 v364
      • v385 (62) = PtrIndex <*byte> v361 v295
      • v386 (62) = Load <byte> v385 v364
      • v387 (62) = Copy <uint8> v386
      • v388 (62) = ZeroExt8to32 <uint32> v387
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v390 (62) = Or32 <uint32> v383 v389
      • v391 (62) = NilCheck <void> v363 v364
      • v392 (62) = PtrIndex <*byte> v363 v20
      • v393 (62) = Load <byte> v392 v364
      • v394 (62) = Copy <uint8> v393
      • v395 (62) = ZeroExt8to32 <uint32> v394
      • v396 (62) = NilCheck <void> v363 v364
      • v397 (62) = PtrIndex <*byte> v363 v277
      • v398 (62) = Load <byte> v397 v364
      • v399 (62) = Copy <uint8> v398
      • v400 (62) = ZeroExt8to32 <uint32> v399
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v403 (62) = NilCheck <void> v363 v364
      • v404 (62) = PtrIndex <*byte> v363 v286
      • v405 (62) = Load <byte> v404 v364
      • v406 (62) = Copy <uint8> v405
      • v407 (62) = ZeroExt8to32 <uint32> v406
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v402 v408
      • v410 (62) = NilCheck <void> v363 v364
      • v411 (62) = PtrIndex <*byte> v363 v295
      • v412 (62) = Load <byte> v411 v364
      • v413 (62) = Copy <uint8> v412
      • v414 (62) = ZeroExt8to32 <uint32> v413
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v416 (62) = Or32 <uint32> v409 v415
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v418 (65) = Copy <uintptr> v788 (keymaybe[uintptr])
      • v419 (+65) = Neq64 <bool> v418 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb40 (+63)
    • b62: ← b60
      • v420 (69) = Copy <uintptr> v787 (i[uintptr], keymaybe[uintptr])
    • Plainb40 (+69)
    • b63: ← b60
    • Plainb64 (+67)
    • b64: ← b63 b9
      • v485 (80) = Phi <mem> v364 v48
      • v747 (97) = Phi <*stringStruct> v350 v46 (key[*stringStruct])
      • v765 (80) = Phi <*abi.MapType> v766 v767 (t[*abi.MapType])
      • v771 (80) = Phi <*hmap> v772 v47 (h[*hmap])
      • v484 (80) = Copy <unsafe.Pointer> v6 (p[unsafe.Pointer])
      • v486 (+80) = InlMark <void> [5618] v485
      • v487 (+221) = Convert <uintptr> v484 v485 (x[uintptr])
      • v488 (+222) = Xor64 <uintptr> v487 v75
      • v489 (222) = Convert <unsafe.Pointer> v488 v485 (~R0[unsafe.Pointer])
    • Plainb72 (+80)
    • b65: ← b40
      • v427 (46) = Copy <uintptr> v786 (i[uintptr])
      • v428 (46) = Add64 <uintptr> v427 v173 (i[uintptr])
      • v429 (46) = Copy <unsafe.Pointer> v426 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v780 v459
      • v480 (+77) = PtrIndex <*byte> v479 v20
      • v481 (77) = Copy <unsafe.Pointer> v480
      • v482 (77) = MakeResult <unsafe.Pointer,mem> v481 v483
    • Ret v482 (+77)
    • b67: ← b41
      • v432 (72) = Copy <*bmap> v782 (b[*bmap])
      • v433 (72) = Copy <unsafe.Pointer> v432 (p[unsafe.Pointer])
      • v434 (72) = Copy <uintptr> v430 (keymaybe[uintptr])
      • v436 (+72) = Mul64 <uintptr> v434 v435
      • v437 (72) = Mul64 <uintptr> v436 v69
      • v438 (72) = Add64 <uintptr> v69 v437 (x[uintptr])
      • v439 (72) = Copy <mem> v780
      • v440 (72) = InlMark <void> [5616] v439
      • v441 (+18) = Convert <uintptr> v433 v439
      • v442 (18) = Add64 <uintptr> v441 v438
      • v443 (18) = Convert <unsafe.Pointer> v442 v439 (~R0[unsafe.Pointer])
    • Plainb68 (+72)
    • b68: ← b67
      • v444 (72) = Copy <unsafe.Pointer> v443 (~R0[unsafe.Pointer])
      • v445 (72) = Copy <*stringStruct> v444 (k[*stringStruct])
      • v446 (73) = Copy <mem> v439
      • v447 (+73) = NilCheck <void> v445 v446
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v445
      • v449 (73) = Load <unsafe.Pointer> v448 v446
      • v450 (73) = Copy <*stringStruct> v776 (key[*stringStruct])
      • v451 (73) = NilCheck <void> v450 v446
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v450
      • v453 (73) = Load <unsafe.Pointer> v452 v446
      • v454 (73) = NilCheck <void> v450 v446
      • v455 (73) = OffPtr <*int> [8] v450
      • v456 (73) = Load <int> v455 v446
      • v457 (73) = Copy <uintptr> v456
      • v458 (73) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v457 v446
      • v459 (73) = SelectN <mem> [1] v458
      • v460 (73) = SelectN <bool> [0] v458
    • If v460b70 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b70: ← b68
      • v461 (74) = Copy <*bmap> v432 (b[*bmap])
      • v462 (74) = Copy <unsafe.Pointer> v461 (p[unsafe.Pointer])
      • v463 (74) = Copy <uintptr> v434 (keymaybe[uintptr])
      • v464 (74) = Copy <*abi.MapType> v775 (t[*abi.MapType])
      • v465 (74) = Copy <mem> v459
      • v466 (+74) = NilCheck <void> v464 v465
      • v467 (74) = OffPtr <*uint8> [81] v464
      • v468 (74) = Load <uint8> v467 v465
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v463 v469
      • v471 (74) = Add64 <uintptr> v148 v470 (x[uintptr])
      • v472 (74) = InlMark <void> [5617] v465
      • v473 (+18) = Convert <uintptr> v462 v465
      • v474 (18) = Add64 <uintptr> v473 v471
      • v475 (18) = Convert <unsafe.Pointer> v474 v465 (~R0[unsafe.Pointer])
    • Plainb71 (+74)
    • b71: ← b70
      • v476 (74) = Copy <unsafe.Pointer> v475 (~R0[unsafe.Pointer])
      • v478 (74) = Copy <mem> v465
      • v477 (74) = MakeResult <unsafe.Pointer,mem> v476 v478
    • Ret v477 (+74)
    • b72: ← b64
      • v490 (80) = Copy <*hmap> v771 (h[*hmap])
      • v491 (80) = Copy <mem> v485
      • v492 (80) = NilCheck <void> v490 v491
      • v493 (80) = OffPtr <*uint32> [12] v490
      • v494 (80) = Load <uint32> v493 v491
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v496 (80) = Copy <*abi.MapType> v765 (t[*abi.MapType])
      • v497 (80) = NilCheck <void> v496 v491
      • v498 (80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v496
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v491
      • v500 (80) = Copy <unsafe.Pointer> v489 (~R0[unsafe.Pointer])
      • v501 (80) = Load <uintptr> v499 v491
      • v502 (80) = ClosureLECall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v500 v495 v491
      • v503 (80) = SelectN <mem> [1] v502
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr])
      • v505 (+81) = NilCheck <void> v490 v503
      • v506 (81) = OffPtr <*uint8> [9] v490
      • v507 (81) = Load <uint8> v506 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (+187) = And8 <uint8> v507 v510
      • v512 (187) = Lsh64x8 <uintptr> [false] v173 v511 (~R0[uintptr])
    • Plainb73 (+192)
    • b73: ← b72
      • v513 (192) = Copy <uintptr> v512 (~R0[uintptr])
      • v514 (192) = Sub64 <uintptr> v513 v173 (~R0[uintptr])
    • Plainb74 (+81)
    • b74: ← b73
      • v515 (81) = Copy <uintptr> v514 (m[uintptr], ~R0[uintptr])
      • v516 (82) = Copy <*hmap> v490 (h[*hmap])
      • v517 (82) = Copy <mem> v503
      • v518 (+82) = NilCheck <void> v516 v517
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v516
      • v520 (82) = Load <unsafe.Pointer> v519 v517 (p[unsafe.Pointer])
      • v521 (82) = Copy <uintptr> v504 (hash[uintptr])
      • v522 (82) = And64 <uintptr> v521 v515
      • v523 (82) = Copy <*abi.MapType> v496 (t[*abi.MapType])
      • v524 (82) = NilCheck <void> v523 v517
      • v525 (82) = OffPtr <*uint16> [82] v523
      • v526 (82) = Load <uint16> v525 v517
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v529 (82) = InlMark <void> [5620] v517
      • v530 (+18) = Convert <uintptr> v520 v517
      • v531 (18) = Add64 <uintptr> v530 v528
      • v532 (18) = Convert <unsafe.Pointer> v531 v517 (~R0[unsafe.Pointer])
    • Plainb75 (+82)
    • b75: ← b74
      • v533 (82) = Copy <unsafe.Pointer> v532 (~R0[unsafe.Pointer])
      • v534 (82) = Copy <*bmap> v533 (b[*bmap])
      • v535 (83) = Copy <*hmap> v516 (h[*hmap])
      • v536 (83) = Copy <mem> v517
      • v537 (+83) = NilCheck <void> v535 v536
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v535
      • v539 (83) = Load <unsafe.Pointer> v538 v536 (c[unsafe.Pointer])
      • v540 (83) = NeqPtr <bool> v539 v12
    • If v540b77 b76 (83)
    • b76: ← b75 b85
      • v584 (93) = Phi <uintptr> v521 v763 (hash[uintptr], hash[uintptr])
      • v585 (93) = Phi <mem> v536 v761
      • v724 (101) = Phi <*abi.MapType> v523 v725 (t[*abi.MapType])
      • v746 (97) = Phi <*stringStruct> v747 v748 (key[*stringStruct])
      • v756 (94) = Phi <*bmap> v534 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v585
      • v588 (+197) = Rsh64Ux64 <uintptr> [false] v584 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (+198) = Less8U <bool> v589 v579
    • If v590b88 b87 (198)
    • b77: ← b75
      • v541 (84) = Copy <*hmap> v535 (h[*hmap], h[*hmap])
      • v542 (84) = Copy <mem> v536
      • v543 (+84) = InlMark <void> [5621] v542
      • v544 (+1128) = NilCheck <void> v541 v542
      • v545 (1128) = OffPtr <*uint8> [8] v541
      • v546 (1128) = Load <uint8> v545 v542
      • v548 (1128) = And8 <uint8> v546 v547
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • Plainb78 (+84)
    • b78: ← b77
      • v550 (84) = Copy <bool> v549 (~R0[bool])
    • If v550b79 b80 (84)
    • b79: ← b78 b80
      • v556 (88) = Phi <uintptr> v515 v553 (m[uintptr])
      • v554 (88) = Copy <unsafe.Pointer> v539 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v555 (88) = Copy <uintptr> v521 (hash[uintptr])
      • v557 (+88) = And64 <uintptr> v555 v556
      • v558 (88) = Copy <*abi.MapType> v523 (t[*abi.MapType])
      • v559 (88) = Copy <mem> v542
      • v560 (88) = NilCheck <void> v558 v559
      • v561 (88) = OffPtr <*uint16> [82] v558
      • v562 (88) = Load <uint16> v561 v559
      • v563 (88) = ZeroExt16to64 <uintptr> v562
      • v564 (88) = Mul64 <uintptr> v557 v563 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v559
      • v566 (+18) = Convert <uintptr> v554 v559
      • v567 (18) = Add64 <uintptr> v566 v564
      • v568 (18) = Convert <unsafe.Pointer> v567 v559 (~R0[unsafe.Pointer])
      • v750 (97) = Copy <*stringStruct> v747 (key[*stringStruct])
      • v759 (94) = Copy <*bmap> v534 (b[*bmap])
    • Plainb81 (+88)
    • b80: ← b78
      • v551 (86) = Copy <uintptr> v515 (m[uintptr])
      • v553 (+86) = Rsh64Ux64 <uintptr> [false] v551 v552 (m[uintptr])
    • Plainb79 (86)
    • b81: ← b79
      • v569 (88) = Copy <unsafe.Pointer> v568 (~R0[unsafe.Pointer])
      • v570 (88) = Copy <*bmap> v569 (oldb[*bmap], b[*bmap])
      • v571 (89) = Copy <mem> v559
      • v572 (+89) = InlMark <void> [5623] v571
      • v573 (+205) = NilCheck <void> v570 v571
      • v574 (205) = OffPtr <*[8]uint8> [0] v570
      • v575 (205) = PtrIndex <*uint8> v574 v20
      • v576 (205) = Load <uint8> v575 v571 (h[uint8])
      • v577 (+206) = Less8U <bool> v103 v576
    • If v577b83 b82 (206)
    • b82: ← b81 b83
      • v581 (89) = Phi <bool> v577 v580 (~R0[bool])
      • v726 (101) = Copy <*abi.MapType> v558 (t[*abi.MapType])
      • v749 (97) = Copy <*stringStruct> v750 (key[*stringStruct])
      • v758 (94) = Copy <*bmap> v759 (b[*bmap])
      • v760 (90) = Copy <*bmap> v570 (oldb[*bmap])
      • v762 (93) = Copy <mem> v571
      • v764 (93) = Copy <uintptr> v555 (hash[uintptr])
    • Plainb84 (+89)
    • b83: ← b81
      • v578 (206) = Copy <uint8> v576 (h[uint8])
      • v580 (206) = Less8U <bool> v578 v579
    • Plainb82 (206)
    • b84: ← b82
      • v582 (89) = Copy <bool> v581 (~R0[bool])
    • If v582b85 b86 (89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v758 v583 (b[*bmap])
      • v725 (101) = Copy <*abi.MapType> v726 (t[*abi.MapType])
      • v748 (97) = Copy <*stringStruct> v749 (key[*stringStruct])
      • v761 (93) = Copy <mem> v762
      • v763 (93) = Copy <uintptr> v764 (hash[uintptr])
    • Plainb76
    • b86: ← b84
      • v583 (90) = Copy <*bmap> v760 (b[*bmap], oldb[*bmap])
    • Plainb85 (+90)
    • b87: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (top[uint8], ~R0[uint8])
      • v723 (101) = Copy <*abi.MapType> v724 (t[*abi.MapType])
      • v745 (97) = Copy <*stringStruct> v746 (key[*stringStruct])
      • v754 (105) = Copy <mem> v585
      • v755 (94) = Copy <*bmap> v756 (b[*bmap])
    • Plainb89 (+93)
    • b88: ← b76
      • v591 (199) = Copy <uint8> v589 (top[uint8])
      • v592 (+199) = Add8 <uint8> v591 v579 (top[uint8])
    • Plainb87 (199)
    • b89: ← b87
      • v594 (93) = Copy <uint8> v593 (top[uint8], ~R0[uint8])
    • Plainb90 (+94)
    • b90: ← b89 b113
      • v595 (94) = Phi <*bmap> v755 v708 (b[*bmap])
      • v721 (101) = Phi <*abi.MapType> v723 v690 (t[*abi.MapType])
      • v735 (97) = Phi <uint8> v594 v734 (top[uint8])
      • v742 (97) = Phi <*stringStruct> v745 v741 (key[*stringStruct])
      • v753 (105) = Phi <mem> v754 v705
      • v597 (+94) = NeqPtr <bool> v595 v596
    • If v597b91 b93 (likely) (94)
    • b91: ← b90
      • v598 (95) = Copy <*bmap> v595 (b[*bmap], b[*bmap])
      • v599 (95) = Copy <mem> v753
      • v600 (+95) = InlMark <void> [5626] v599
      • v601 (218) = Copy <unsafe.Pointer> v598 (p[unsafe.Pointer])
      • v602 (+218) = InlMark <void> [5633] v599
      • v603 (+18) = Convert <uintptr> v601 v599
      • v604 (18) = Add64 <uintptr> v603 v69
      • v605 (18) = Convert <unsafe.Pointer> v604 v599 (~R0[unsafe.Pointer])
    • Plainb94 (+218)
    • b92: ← b99
      • v689 (94) = Copy <*bmap> v729 (b[*bmap], b[*bmap])
      • v690 (94) = Copy <*abi.MapType> v720 (t[*abi.MapType], t[*abi.MapType])
      • v691 (94) = Copy <mem> v751
      • v692 (+94) = InlMark <void> [5625] v691
      • v693 (210) = Copy <unsafe.Pointer> v689 (p[unsafe.Pointer])
      • v694 (+210) = NilCheck <void> v690 v691
      • v695 (210) = OffPtr <*uint16> [82] v690
      • v696 (210) = Load <uint16> v695 v691
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v698 (210) = Sub64 <uintptr> v697 v69 (x[uintptr])
      • v699 (210) = InlMark <void> [5632] v691
      • v700 (+18) = Convert <uintptr> v693 v691
      • v701 (18) = Add64 <uintptr> v700 v698
      • v702 (18) = Convert <unsafe.Pointer> v701 v691 (~R0[unsafe.Pointer])
    • Plainb112 (+210)
    • b93: ← b90
      • v710 (+105) = PtrIndex <*byte> v709 v20
      • v711 (105) = Copy <unsafe.Pointer> v710
      • v713 (105) = Copy <mem> v753
      • v712 (105) = MakeResult <unsafe.Pointer,mem> v711 v713
    • Ret v712 (+105)
    • b94: ← b91
      • v606 (95) = Copy <unsafe.Pointer> v605 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb95 (+95)
    • b95: ← b94
      • v607 (95) = Copy <unsafe.Pointer> v606 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v720 (101) = Phi <*abi.MapType> v721 v722 (t[*abi.MapType])
      • v729 (101) = Phi <*bmap> v598 v730 (b[*bmap])
      • v734 (97) = Phi <uint8> v735 v736 (top[uint8])
      • v741 (97) = Phi <*stringStruct> v742 v743 (key[*stringStruct])
      • v751 (97) = Phi <mem> v599 v681
      • v752 (96) = Phi <unsafe.Pointer> v607 v688 (kptr[unsafe.Pointer])
      • v609 (+95) = Less64U <bool> v608 v69
    • If v609b97 b99 (likely) (95)
    • b97: ← b96
      • v610 (96) = Copy <unsafe.Pointer> v752 (kptr[unsafe.Pointer])
      • v611 (96) = Copy <*stringStruct> v610 (k[*stringStruct])
      • v612 (97) = Copy <mem> v751
      • v613 (+97) = NilCheck <void> v611 v612
      • v614 (97) = OffPtr <*int> [8] v611
      • v615 (97) = Load <int> v614 v612
      • v616 (97) = Copy <*stringStruct> v741 (key[*stringStruct])
      • v617 (97) = NilCheck <void> v616 v612
      • v618 (97) = OffPtr <*int> [8] v616
      • v619 (97) = Load <int> v618 v612
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b100 b101 (97)
    • b98: ← b105 b108
      • v680 (95) = Phi <unsafe.Pointer> v739 v740 (kptr[unsafe.Pointer], p[unsafe.Pointer])
      • v681 (95) = Phi <mem> v732 v717
      • v714 (95) = Phi <uintptr> v715 v716 (i[uintptr])
      • v722 (101) = Phi <*abi.MapType> v719 v718 (t[*abi.MapType])
      • v730 (101) = Phi <*bmap> v728 v727 (b[*bmap])
      • v736 (97) = Phi <uint8> v737 v738 (top[uint8])
      • v743 (97) = Phi <*stringStruct> v731 v744 (key[*stringStruct])
      • v682 (+95) = InlMark <void> [5627] v681
      • v683 (+18) = Convert <uintptr> v680 v681
      • v684 (18) = Add64 <uintptr> v683 v166
      • v685 (18) = Convert <unsafe.Pointer> v684 v681 (~R0[unsafe.Pointer])
    • Plainb111 (+95)
    • b99: ← b96
    • Plainb92 (95)
    • b100: ← b97 b102
      • v634 (97) = Phi <bool> v620 v633
      • v715 (95) = Phi <uintptr> v608 v625 (i[uintptr])
      • v728 (101) = Phi <*bmap> v729 v621 (b[*bmap])
      • v732 (100) = Phi <mem> v612 v630
      • v737 (97) = Phi <uint8> v734 v632 (top[uint8])
      • v719 (101) = Copy <*abi.MapType> v720 (t[*abi.MapType])
      • v731 (100) = Copy <*stringStruct> v616 (key[*stringStruct])
      • v733 (100) = Copy <*stringStruct> v611 (k[*stringStruct])
      • v739 (95) = Copy <unsafe.Pointer> v610 (kptr[unsafe.Pointer])
    • If v634b105 b104 (97)
    • b101: ← b97
      • v621 (97) = Copy <*bmap> v729 (b[*bmap])
      • v622 (97) = Copy <mem> v612
      • v623 (97) = NilCheck <void> v621 v622
      • v624 (97) = OffPtr <*[8]uint8> [0] v621
      • v625 (97) = Copy <uintptr> v608 (i[uintptr])
      • v626 (97) = IsInBounds <bool> v625 v95
    • If v626b102 b103 (likely) (97)
    • b102: ← b101
      • v629 (97) = PtrIndex <*uint8> v624 v625
      • v630 (97) = Copy <mem> v622
      • v631 (97) = Load <uint8> v629 v630
      • v632 (97) = Copy <uint8> v734 (top[uint8])
      • v633 (97) = Neq8 <bool> v631 v632
    • Plainb100 (97)
    • b103: ← b101
      • v627 (97) = Copy <mem> v622
      • v628 (97) = PanicBounds <mem> [1] v625 v95 v627
    • Exit v628 (97)
    • b104: ← b100
      • v635 (100) = Copy <*stringStruct> v733 (k[*stringStruct])
      • v636 (100) = Copy <mem> v732
      • v637 (+100) = NilCheck <void> v635 v636
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v635
      • v639 (100) = Load <unsafe.Pointer> v638 v636
      • v640 (100) = Copy <*stringStruct> v731 (key[*stringStruct])
      • v641 (100) = NilCheck <void> v640 v636
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v640
      • v643 (100) = Load <unsafe.Pointer> v642 v636
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b106 b107 (100)
    • b105: ← b100
    • Plainb98 (+98)
    • b106: ← b104 b107
      • v661 (100) = Phi <bool> v644 v660
      • v717 (101) = Phi <mem> v636 v659
      • v744 (97) = Phi <*stringStruct> v640 v650 (key[*stringStruct])
      • v716 (95) = Copy <uintptr> v715 (i[uintptr])
      • v718 (101) = Copy <*abi.MapType> v719 (t[*abi.MapType])
      • v727 (101) = Copy <*bmap> v728 (b[*bmap])
      • v738 (97) = Copy <uint8> v737 (top[uint8])
      • v740 (95) = Copy <unsafe.Pointer> v739 (kptr[unsafe.Pointer])
    • If v661b109 b108 (100)
    • b107: ← b104
      • v645 (100) = Copy <*stringStruct> v635 (k[*stringStruct])
      • v646 (100) = Copy <mem> v636
      • v647 (100) = NilCheck <void> v645 v646
      • v648 (100) = OffPtr <*unsafe.Pointer> [0] v645
      • v649 (100) = Load <unsafe.Pointer> v648 v646
      • v650 (100) = Copy <*stringStruct> v640 (key[*stringStruct])
      • v651 (100) = NilCheck <void> v650 v646
      • v652 (100) = OffPtr <*unsafe.Pointer> [0] v650
      • v653 (100) = Load <unsafe.Pointer> v652 v646
      • v654 (100) = NilCheck <void> v650 v646
      • v655 (100) = OffPtr <*int> [8] v650
      • v656 (100) = Load <int> v655 v646
      • v657 (100) = Copy <uintptr> v656
      • v658 (100) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v649 v653 v657 v646
      • v659 (100) = SelectN <mem> [1] v658
      • v660 (100) = SelectN <bool> [0] v658
    • Plainb106 (100)
    • b108: ← b106
    • Plainb98 (100)
    • b109: ← b106
      • v662 (101) = Copy <*bmap> v727 (b[*bmap])
      • v663 (101) = Copy <unsafe.Pointer> v662 (p[unsafe.Pointer])
      • v664 (101) = Copy <uintptr> v716 (i[uintptr])
      • v665 (101) = Copy <*abi.MapType> v718 (t[*abi.MapType])
      • v666 (101) = Copy <mem> v717
      • v667 (+101) = NilCheck <void> v665 v666
      • v668 (101) = OffPtr <*uint8> [81] v665
      • v669 (101) = Load <uint8> v668 v666
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v664 v670
      • v672 (101) = Add64 <uintptr> v148 v671 (x[uintptr])
      • v673 (101) = InlMark <void> [5628] v666
      • v674 (+18) = Convert <uintptr> v663 v666
      • v675 (18) = Add64 <uintptr> v674 v672
      • v676 (18) = Convert <unsafe.Pointer> v675 v666 (~R0[unsafe.Pointer])
    • Plainb110 (+101)
    • b110: ← b109
      • v677 (101) = Copy <unsafe.Pointer> v676 (~R0[unsafe.Pointer])
      • v679 (101) = Copy <mem> v666
      • v678 (101) = MakeResult <unsafe.Pointer,mem> v677 v679
    • Ret v678 (+101)
    • b111: ← b98
      • v686 (95) = Copy <uintptr> v714 (i[uintptr])
      • v687 (95) = Add64 <uintptr> v686 v173 (i[uintptr])
      • v688 (95) = Copy <unsafe.Pointer> v685 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb96 (95)
    • b112: ← b92
      • v703 (210) = Copy <unsafe.Pointer> v702 (~R0[unsafe.Pointer])
      • v704 (210) = Copy <**bmap> v703
      • v705 (210) = Copy <mem> v691
      • v706 (210) = NilCheck <void> v704 v705
      • v707 (210) = Load <*bmap> v704 v705 (~R0[*bmap])
    • Plainb113 (+94)
    • b113: ← b112
      • v708 (94) = Copy <*bmap> v707 (~R0[*bmap], b[*bmap])
    • Plainb90 (94)
  • name t[*abi.MapType]: v8 v150 v244 v464 v496 v523 v558 v665 v690 v718 v719 v720 v721 v722 v723 v724 v725 v726 v765 v766 v767 v768 v769 v770 v775 v799 v800 v801 v802
  • name h[*hmap]: v9 v15 v29 v47 v53 v490 v516 v535 v541 v771 v772 v773 v774 v817 v819
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v45 v46
  • name key[*stringStruct]: v46 v59 v85 v124 v134 v199 v236 v259 v330 v350 v450 v616 v640 v650 v731 v741 v742 v743 v744 v745 v746 v747 v748 v749 v750 v776 v777 v778 v779 v808 v813 v814 v815
  • name b[*bmap]: v58 v65 v90 v107 v146 v181 v204 v219 v241 v432 v461 v782 v783 v784 v785 v803 v804 v805 v806
  • name b[*bmap]: v65
  • name p[unsafe.Pointer]: v68
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73 v74
  • name ~R0[unsafe.Pointer]: v74 v76
  • name i[uintptr]: v75 v77 v94 v111 v149 v172 v174 v795 v796 v797
  • name kptr[unsafe.Pointer]: v76 v79 v165 v175 v811 v812 v816
  • name k[*stringStruct]: v80 v119 v129 v809
  • name x[uint8]: v101
  • name ~R0[bool]: v104 v105
  • name p[unsafe.Pointer]: v147
  • name x[uintptr]: v157
  • name ~R0[unsafe.Pointer]: v161 v162
  • name p[unsafe.Pointer]: v165
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v171 v175
  • name keymaybe[uintptr]: v69 v418 v420 v430 v434 v463 v788 v789 v790
  • name b[*bmap]: v181
  • name p[unsafe.Pointer]: v184
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188 v189
  • name ~R0[unsafe.Pointer]: v189 v190
  • name i[uintptr]: v75 v191 v208 v223 v243 v420 v427 v428 v786 v787
  • name kptr[unsafe.Pointer]: v190 v193 v421 v429 v793 v794
  • name k[*stringStruct]: v194 v231 v265 v345 v792
  • name x[uint8]: v214
  • name ~R0[bool]: v216 v217
  • name p[unsafe.Pointer]: v242
  • name x[uintptr]: v251
  • name ~R0[unsafe.Pointer]: v255 v256
  • name p[unsafe.Pointer]: v334
  • name x[uintptr]: v340
  • name ~R0[unsafe.Pointer]: v344 v360
  • name p[unsafe.Pointer]: v349
  • name x[uintptr]: v355
  • name ~R0[unsafe.Pointer]: v359 v362
  • name p[unsafe.Pointer]: v421
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v426 v429
  • name p[unsafe.Pointer]: v433
  • name x[uintptr]: v438
  • name ~R0[unsafe.Pointer]: v443 v444
  • name k[*stringStruct]: v445
  • name p[unsafe.Pointer]: v462
  • name x[uintptr]: v471
  • name ~R0[unsafe.Pointer]: v475 v476
  • name p[unsafe.Pointer]: v484
  • name x[uintptr]: v487
  • name ~R0[unsafe.Pointer]: v489 v500
  • name hash[uintptr]: v504 v521 v555 v584 v763 v764
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512 v513
  • name ~R0[uintptr]: v514 v515
  • name m[uintptr]: v515 v551 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532 v533
  • name b[*bmap]: v534 v583 v595 v598 v621 v662 v689 v708 v727 v728 v729 v730 v755 v756 v757 v758 v759
  • name c[unsafe.Pointer]: v539 v554
  • name h[*hmap]: v541
  • name ~R0[bool]: v549 v550
  • name p[unsafe.Pointer]: v554
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568 v569
  • name oldb[*bmap]: v570 v583 v760
  • name b[*bmap]: v570
  • name h[uint8]: v576 v578
  • name ~R0[bool]: v581 v582
  • name hash[uintptr]: v584
  • name top[uint8]: v589 v591 v592 v593
  • name ~R0[uint8]: v593 v594
  • name top[uint8]: v594 v632 v734 v735 v736 v737 v738
  • name b[*bmap]: v598
  • name p[unsafe.Pointer]: v601
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605 v606
  • name ~R0[unsafe.Pointer]: v606 v607
  • name i[uintptr]: v75 v608 v625 v664 v686 v687 v714 v715 v716
  • name kptr[unsafe.Pointer]: v607 v610 v680 v688 v739 v740 v752
  • name k[*stringStruct]: v611 v635 v645 v733
  • name p[unsafe.Pointer]: v663
  • name x[uintptr]: v672
  • name ~R0[unsafe.Pointer]: v676 v677
  • name p[unsafe.Pointer]: v680
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v685 v688
  • name b[*bmap]: v689
  • name t[*abi.MapType]: v690
  • name p[unsafe.Pointer]: v693
  • name x[uintptr]: v698
  • name ~R0[unsafe.Pointer]: v702 v703
  • name ~R0[*bmap]: v707 v708
  • early phielim [82378 ns]

    b1 b1 If b2 b2 If b1->b2 0 b3 b3 Plain b1->b3 1 b5 b5 Ret b2->b5 0 b4 b4 If b2->b4 1 b3->b2 0 b7 b7 Plain b4->b7 0 b6 b6 Plain b4->b6 1 b8 b8 If b6->b8 0 b7->b6 0 b10 b10 If b8->b10 0 b9 b9 Plain b8->b9 1 b64 b64 Plain b9->b64 0 b12 b12 Plain b10->b12 0 b11 b11 Plain b10->b11 1 b36 b36 Plain b11->b36 0 b13 b13 Plain b12->b13 0 b14 b14 Plain b13->b14 0 b15 b15 If b14->b15 0 b16 b16 If b15->b16 0 b18 b18 Ret b15->b18 1 b19 b19 If b16->b19 0 b20 b20 If b16->b20 1 b17 b17 Plain b35 b35 Plain b17->b35 0 b25 b25 If b19->b25 0 b24 b24 If b19->b24 1 b21 b21 Plain b20->b21 0 b22 b22 Exit b20->b22 1 b23 b23 Plain b21->b23 0 b23->b19 0 b30 b30 If b24->b30 0 b31 b31 Plain b24->b31 1 b28 b28 If b25->b28 0 b29 b29 Exit b25->b29 1 b26 b26 Plain b26->b17 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b33 b33 Plain b30->b33 0 b32 b32 Plain b30->b32 1 b31->b30 0 b32->b17 0 b34 b34 Ret b33->b34 0 b35->b15 0 b37 b37 Plain b36->b37 0 b38 b38 If b37->b38 0 b39 b39 If b38->b39 0 b41 b41 If b38->b41 1 b42 b42 If b39->b42 0 b43 b43 If b39->b43 1 b40 b40 Plain b65 b65 Plain b40->b65 0 b67 b67 Plain b41->b67 0 b66 b66 Ret b41->b66 1 b48 b48 If b42->b48 0 b47 b47 If b42->b47 1 b44 b44 Plain b43->b44 0 b45 b45 Exit b43->b45 1 b46 b46 Plain b44->b46 0 b46->b42 0 b54 b54 Plain b47->b54 0 b53 b53 If b47->b53 1 b51 b51 If b48->b51 0 b52 b52 Exit b48->b52 1 b49 b49 Plain b49->b40 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b56 b56 Plain b53->b56 1 b55 b55 Ret b54->b55 0 b58 b58 Plain b56->b58 0 b57->b40 0 b59 b59 If b58->b59 0 b61 b61 Plain b59->b61 0 b60 b60 If b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b40 0 b62->b40 0 b63->b64 0 b72 b72 Plain b64->b72 0 b65->b38 0 b68 b68 If b67->b68 0 b70 b70 Plain b68->b70 0 b69 b69 Plain b68->b69 1 b69->b66 0 b71 b71 Ret b70->b71 0 b73 b73 Plain b72->b73 0 b74 b74 Plain b73->b74 0 b75 b75 If b74->b75 0 b77 b77 Plain b75->b77 0 b76 b76 If b75->b76 1 b88 b88 Plain b76->b88 0 b87 b87 Plain b76->b87 1 b78 b78 If b77->b78 0 b79 b79 Plain b78->b79 0 b80 b80 Plain b78->b80 1 b81 b81 If b79->b81 0 b80->b79 0 b83 b83 Plain b81->b83 0 b82 b82 Plain b81->b82 1 b84 b84 If b82->b84 0 b83->b82 0 b85 b85 Plain b84->b85 0 b86 b86 Plain b84->b86 1 b85->b76 0 b86->b85 0 b89 b89 Plain b87->b89 0 b88->b87 0 b90 b90 If b89->b90 0 b91 b91 Plain b90->b91 0 b93 b93 Ret b90->b93 1 b94 b94 Plain b91->b94 0 b92 b92 Plain b112 b112 Plain b92->b112 0 b95 b95 Plain b94->b95 0 b96 b96 If b95->b96 0 b97 b97 If b96->b97 0 b99 b99 Plain b96->b99 1 b100 b100 If b97->b100 0 b101 b101 If b97->b101 1 b98 b98 Plain b111 b111 Plain b98->b111 0 b99->b92 0 b105 b105 Plain b100->b105 0 b104 b104 If b100->b104 1 b102 b102 Plain b101->b102 0 b103 b103 Exit b101->b103 1 b102->b100 0 b106 b106 If b104->b106 0 b107 b107 Plain b104->b107 1 b105->b98 0 b109 b109 Plain b106->b109 0 b108 b108 Plain b106->b108 1 b107->b106 0 b108->b98 0 b110 b110 Ret b109->b110 0 b111->b96 0 b113 b113 Plain b112->b113 0 b113->b90 0
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v4 (?) = LocalAddr <**abi.MapType> {t} v2 v1
      • v5 (?) = LocalAddr <**hmap> {h} v2 v1
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (sp[*string])
      • v7 (?) = LocalAddr <*unsafe.Pointer> {~r0} v2 v1
      • v8 (13) = Arg <*abi.MapType> {t} (t[*abi.MapType])
      • v9 (13) = Arg <*hmap> {h} (h[*hmap])
      • v10 (13) = Arg <string> {ky}
      • v11 (+13) = Store <mem> {string} v6 v10 v1
      • v12 (?) = ConstNil <unsafe.Pointer>
      • v13 (?) = ConstNil <*hmap>
      • v14 (+18) = EqPtr <bool> v9 v13
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v24 (?) = Const64 <int> [1024]
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v38 (?) = ConstString <string> {"concurrent map read and map write"}
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (x[uintptr], keymaybe[uintptr], x[uintptr], x[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v95 (?) = Const64 <int> [8]
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v166 (?) = Const64 <uintptr> [16] (x[uintptr], x[uintptr], x[uintptr])
      • v173 (?) = Const64 <uintptr> [1]
      • v176 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v271 (?) = Const64 <int> [4]
      • v277 (?) = Const64 <int> [1]
      • v282 (?) = Const64 <uint> [8]
      • v286 (?) = Const64 <int> [2]
      • v291 (?) = Const64 <uint> [16]
      • v295 (?) = Const64 <int> [3]
      • v300 (?) = Const64 <uint> [24]
      • v339 (?) = Const64 <uintptr> [4]
      • v435 (?) = Const64 <uintptr> [2]
      • v479 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v596 (?) = ConstNil <*bmap>
      • v709 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
    • If v14b2 b3 (18)
    • b2: ← b1 b3
      • v22 (18) = Phi <bool> v14 v21
      • v768 (80) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v818 (19) = Copy <mem> v11
      • v819 (21) = Copy <*hmap> v9 (h[*hmap])
    • If v22b5 b4 (18)
    • b3: ← b1
      • v15 (18) = Copy <*hmap> v9 (h[*hmap])
      • v16 (18) = Copy <mem> v11
      • v17 (18) = NilCheck <void> v9 v11
      • v18 (18) = OffPtr <*int> [0] v9
      • v19 (18) = Load <int> v18 v11
      • v21 (18) = Eq64 <bool> v19 v20
    • Plainb2 (18)
    • b4: ← b2
      • v29 (21) = Copy <*hmap> v9 (h[*hmap])
      • v30 (21) = Copy <mem> v11
      • v31 (+21) = NilCheck <void> v9 v11
      • v32 (21) = OffPtr <*uint8> [8] v9
      • v33 (21) = Load <uint8> v32 v11
      • v35 (21) = And8 <uint8> v33 v34
      • v37 (21) = Neq8 <bool> v35 v36
    • If v37b7 b6 (21)
    • b5: ← b2
      • v25 (+19) = PtrIndex <*byte> v23 v20
      • v26 (19) = Copy <unsafe.Pointer> v25
      • v27 (19) = MakeResult <unsafe.Pointer,mem> v25 v11
      • v28 (19) = Copy <mem> v11
    • Ret v27 (+19)
    • b6: ← b4 b7
      • v42 (24) = Phi <mem> v11 v41
      • v43 (+24) = InlMark <void> [5605] v42
      • v44 (244) = Copy <unsafe.Pointer> v6
      • v45 (244) = Copy <*stringStruct> v6 (~R0[*stringStruct])
      • v767 (80) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v817 (25) = Copy <*hmap> v9 (h[*hmap])
    • Plainb8 (+24)
    • b7: ← b4
      • v39 (22) = Copy <mem> v11
      • v40 (+22) = StaticLECall <mem> {AuxCall{runtime.fatal}} [16] v38 v11
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb6 (22)
    • b8: ← b6
      • v46 (24) = Copy <*stringStruct> v6 (~R0[*stringStruct], key[*stringStruct])
      • v47 (25) = Copy <*hmap> v9 (h[*hmap])
      • v48 (25) = Copy <mem> v42
      • v49 (+25) = NilCheck <void> v9 v42
      • v50 (25) = OffPtr <*uint8> [9] v9
      • v51 (25) = Load <uint8> v50 v42
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb64 (25)
    • b10: ← b8
      • v53 (27) = Copy <*hmap> v9 (h[*hmap])
      • v54 (27) = Copy <mem> v42
      • v55 (+27) = NilCheck <void> v9 v42
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v9
      • v57 (27) = Load <unsafe.Pointer> v56 v42
      • v58 (27) = Copy <*bmap> v57 (b[*bmap])
      • v59 (28) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v60 (+28) = NilCheck <void> v6 v42
      • v61 (28) = OffPtr <*int> [8] v6
      • v62 (28) = Load <int> v61 v42
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b12 b11 (28)
    • b11: ← b10
      • v181 (46) = Copy <*bmap> v57 (b[*bmap], b[*bmap])
      • v182 (46) = Copy <mem> v42
      • v183 (+46) = InlMark <void> [5610] v42
      • v184 (218) = Copy <unsafe.Pointer> v57 (p[unsafe.Pointer])
      • v185 (+218) = InlMark <void> [5630] v42
      • v186 (+18) = Convert <uintptr> v57 v42
      • v187 (18) = Add64 <uintptr> v186 v69
      • v188 (18) = Convert <unsafe.Pointer> v187 v42 (~R0[unsafe.Pointer])
    • Plainb36 (+218)
    • b12: ← b10
      • v65 (30) = Copy <*bmap> v57 (b[*bmap], b[*bmap])
      • v66 (30) = Copy <mem> v42
      • v67 (+30) = InlMark <void> [5606] v42
      • v68 (218) = Copy <unsafe.Pointer> v57 (p[unsafe.Pointer])
      • v70 (+218) = InlMark <void> [5629] v42
      • v71 (+18) = Convert <uintptr> v57 v42
      • v72 (18) = Add64 <uintptr> v71 v69
      • v73 (18) = Convert <unsafe.Pointer> v72 v42 (~R0[unsafe.Pointer])
    • Plainb13 (+218)
    • b13: ← b12
      • v74 (30) = Copy <unsafe.Pointer> v73 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb14 (+30)
    • b14: ← b13
      • v76 (30) = Copy <unsafe.Pointer> v73 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb15 (30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (kptr[unsafe.Pointer])
      • v78 (+30) = Less64U <bool> v77 v69
      • v801 (39) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v805 (39) = Copy <*bmap> v57 (b[*bmap])
      • v813 (32) = Copy <*stringStruct> v6 (key[*stringStruct])
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v79 (31) = Copy <unsafe.Pointer> v816 (kptr[unsafe.Pointer])
      • v80 (31) = Copy <*stringStruct> v816 (k[*stringStruct])
      • v81 (32) = Copy <mem> v810
      • v82 (+32) = NilCheck <void> v816 v810
      • v83 (32) = OffPtr <*int> [8] v816
      • v84 (32) = Load <int> v83 v810
      • v85 (32) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v86 (32) = NilCheck <void> v6 v810
      • v87 (32) = OffPtr <*int> [8] v6
      • v88 (32) = Load <int> v87 v810
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b19 b20 (32)
    • b17: ← b26 b32
      • v167 (30) = Phi <mem> v810 v798
      • v165 (30) = Copy <unsafe.Pointer> v816 (kptr[unsafe.Pointer], p[unsafe.Pointer])
      • v168 (+30) = InlMark <void> [5607] v167
      • v169 (+18) = Convert <uintptr> v816 v167
      • v170 (18) = Add64 <uintptr> v169 v166
      • v171 (18) = Convert <unsafe.Pointer> v170 v167 (~R0[unsafe.Pointer])
      • v795 (30) = Copy <uintptr> v77 (i[uintptr])
      • v802 (39) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v806 (39) = Copy <*bmap> v57 (b[*bmap])
      • v814 (32) = Copy <*stringStruct> v6 (key[*stringStruct])
    • Plainb35 (+30)
    • b18: ← b15 b27
      • v177 (+42) = PtrIndex <*byte> v176 v20
      • v178 (42) = Copy <unsafe.Pointer> v177
      • v179 (42) = MakeResult <unsafe.Pointer,mem> v177 v810
      • v180 (42) = Copy <mem> v810
    • Ret v179 (+42)
    • b19: ← b16 b23
      • v106 (32) = Phi <bool> v89 v104
      • v797 (30) = Copy <uintptr> v77 (i[uintptr])
      • v800 (39) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v804 (39) = Copy <*bmap> v57 (b[*bmap])
      • v807 (33) = Copy <mem> v810
      • v808 (38) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v809 (38) = Copy <*stringStruct> v816 (k[*stringStruct])
      • v811 (30) = Copy <unsafe.Pointer> v816 (kptr[unsafe.Pointer])
    • If v106b25 b24 (32)
    • b20: ← b16
      • v90 (32) = Copy <*bmap> v57 (b[*bmap])
      • v91 (32) = Copy <mem> v810
      • v92 (32) = NilCheck <void> v57 v810
      • v93 (32) = OffPtr <*[8]uint8> [0] v57
      • v94 (32) = Copy <uintptr> v77 (i[uintptr])
      • v96 (32) = IsInBounds <bool> v77 v95
    • If v96b21 b22 (likely) (32)
    • b21: ← b20
      • v99 (32) = PtrIndex <*uint8> v93 v77
      • v100 (32) = Copy <mem> v810
      • v101 (32) = Load <uint8> v99 v810 (x[uint8])
      • v102 (32) = InlMark <void> [5608] v810
      • v104 (+113) = Leq8U <bool> v101 v103 (~R0[bool])
    • Plainb23 (+32)
    • b22: ← b20
      • v97 (32) = Copy <mem> v810
      • v98 (32) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v98 (32)
    • b23: ← b21
      • v105 (32) = Copy <bool> v104 (~R0[bool])
    • Plainb19 (32)
    • b24: ← b19
      • v119 (38) = Copy <*stringStruct> v816 (k[*stringStruct])
      • v120 (38) = Copy <mem> v810
      • v121 (+38) = NilCheck <void> v816 v810
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v123 (38) = Load <unsafe.Pointer> v122 v810
      • v124 (38) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v125 (38) = NilCheck <void> v6 v810
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v127 (38) = Load <unsafe.Pointer> v126 v810
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b30 b31 (38)
    • b25: ← b19
      • v107 (33) = Copy <*bmap> v57 (b[*bmap])
      • v108 (33) = Copy <mem> v810
      • v109 (+33) = NilCheck <void> v57 v810
      • v110 (33) = OffPtr <*[8]uint8> [0] v57
      • v111 (33) = Copy <uintptr> v77 (i[uintptr])
      • v112 (33) = IsInBounds <bool> v77 v95
    • If v112b28 b29 (likely) (33)
    • b26: ← b28
    • Plainb17 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b25
      • v115 (33) = PtrIndex <*uint8> v110 v77
      • v116 (33) = Copy <mem> v810
      • v117 (33) = Load <uint8> v115 v810
      • v118 (33) = Eq8 <bool> v117 v36
    • If v118b27 b26 (33)
    • b29: ← b25
      • v113 (33) = Copy <mem> v810
      • v114 (33) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v114 (33)
    • b30: ← b24 b31
      • v145 (38) = Phi <bool> v128 v144
      • v798 (39) = Phi <mem> v810 v143
      • v796 (30) = Copy <uintptr> v77 (i[uintptr])
      • v799 (39) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v803 (39) = Copy <*bmap> v57 (b[*bmap])
      • v812 (30) = Copy <unsafe.Pointer> v816 (kptr[unsafe.Pointer])
      • v815 (32) = Copy <*stringStruct> v6 (key[*stringStruct])
    • If v145b33 b32 (38)
    • b31: ← b24
      • v129 (38) = Copy <*stringStruct> v816 (k[*stringStruct])
      • v130 (38) = Copy <mem> v810
      • v131 (38) = NilCheck <void> v816 v810
      • v132 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v133 (38) = Load <unsafe.Pointer> v132 v810
      • v134 (38) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v135 (38) = NilCheck <void> v6 v810
      • v136 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v137 (38) = Load <unsafe.Pointer> v136 v810
      • v138 (38) = NilCheck <void> v6 v810
      • v139 (38) = OffPtr <*int> [8] v6
      • v140 (38) = Load <int> v139 v810
      • v141 (38) = Copy <uintptr> v140
      • v142 (38) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v133 v137 v140 v810
      • v143 (38) = SelectN <mem> [1] v142
      • v144 (38) = SelectN <bool> [0] v142
    • Plainb30 (38)
    • b32: ← b30
    • Plainb17 (38)
    • b33: ← b30
      • v146 (39) = Copy <*bmap> v57 (b[*bmap])
      • v147 (39) = Copy <unsafe.Pointer> v57 (p[unsafe.Pointer])
      • v149 (39) = Copy <uintptr> v77 (i[uintptr])
      • v150 (39) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v151 (39) = Copy <mem> v798
      • v152 (+39) = NilCheck <void> v8 v798
      • v153 (39) = OffPtr <*uint8> [81] v8
      • v154 (39) = Load <uint8> v153 v798
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v77 v155
      • v157 (39) = Add64 <uintptr> v148 v156 (x[uintptr])
      • v158 (39) = InlMark <void> [5609] v798
      • v159 (+18) = Convert <uintptr> v57 v798
      • v160 (18) = Add64 <uintptr> v159 v157
      • v161 (18) = Convert <unsafe.Pointer> v160 v798 (~R0[unsafe.Pointer])
    • Plainb34 (+39)
    • b34: ← b33
      • v162 (39) = Copy <unsafe.Pointer> v161 (~R0[unsafe.Pointer])
      • v163 (39) = MakeResult <unsafe.Pointer,mem> v161 v798
      • v164 (39) = Copy <mem> v798
    • Ret v163 (+39)
    • b35: ← b17
      • v172 (30) = Copy <uintptr> v77 (i[uintptr])
      • v174 (30) = Add64 <uintptr> v77 v173 (i[uintptr])
      • v175 (30) = Copy <unsafe.Pointer> v171 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb15 (30)
    • b36: ← b11
      • v189 (46) = Copy <unsafe.Pointer> v188 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb37 (+46)
    • b37: ← b36
      • v190 (46) = Copy <unsafe.Pointer> v188 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb38 (46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (i[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (kptr[unsafe.Pointer])
      • v192 (+46) = Less64U <bool> v191 v69
      • v769 (80) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v773 (80) = Copy <*hmap> v9 (h[*hmap])
      • v777 (73) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v781 (72) = Copy <mem> v42
      • v783 (72) = Copy <*bmap> v57 (b[*bmap])
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v193 (47) = Copy <unsafe.Pointer> v794 (kptr[unsafe.Pointer])
      • v194 (47) = Copy <*stringStruct> v794 (k[*stringStruct])
      • v195 (48) = Copy <mem> v42
      • v196 (+48) = NilCheck <void> v794 v42
      • v197 (48) = OffPtr <*int> [8] v794
      • v198 (48) = Load <int> v197 v42
      • v199 (48) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v200 (48) = NilCheck <void> v6 v42
      • v201 (48) = OffPtr <*int> [8] v6
      • v202 (48) = Load <int> v201 v42
      • v203 (48) = Neq64 <bool> v198 v202
    • If v203b42 b43 (48)
    • b40: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v421 (46) = Copy <unsafe.Pointer> v794 (p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v422 (46) = Copy <mem> v42
      • v423 (+46) = InlMark <void> [5611] v42
      • v424 (+18) = Convert <uintptr> v794 v42
      • v425 (18) = Add64 <uintptr> v424 v166
      • v426 (18) = Convert <unsafe.Pointer> v425 v42 (~R0[unsafe.Pointer])
      • v770 (80) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v774 (80) = Copy <*hmap> v9 (h[*hmap])
      • v779 (73) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v784 (72) = Copy <*bmap> v57 (b[*bmap])
      • v786 (46) = Copy <uintptr> v191 (i[uintptr])
    • Plainb65 (+46)
    • b41: ← b38 b50
      • v430 (71) = Copy <uintptr> v789 (keymaybe[uintptr])
      • v431 (+71) = Neq64 <bool> v789 v69
      • v775 (74) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v776 (73) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v780 (72) = Copy <mem> v42
      • v782 (72) = Copy <*bmap> v57 (b[*bmap])
    • If v431b67 b66 (71)
    • b42: ← b39 b46
      • v218 (48) = Phi <bool> v203 v216
      • v766 (80) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v772 (80) = Copy <*hmap> v9 (h[*hmap])
      • v778 (73) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v785 (72) = Copy <*bmap> v57 (b[*bmap])
      • v787 (46) = Copy <uintptr> v191 (i[uintptr])
      • v788 (65) = Copy <uintptr> v789 (keymaybe[uintptr])
      • v791 (49) = Copy <mem> v42
      • v792 (54) = Copy <*stringStruct> v794 (k[*stringStruct])
      • v793 (46) = Copy <unsafe.Pointer> v794 (kptr[unsafe.Pointer])
    • If v218b48 b47 (48)
    • b43: ← b39
      • v204 (48) = Copy <*bmap> v57 (b[*bmap])
      • v205 (48) = Copy <mem> v42
      • v206 (48) = NilCheck <void> v57 v42
      • v207 (48) = OffPtr <*[8]uint8> [0] v57
      • v208 (48) = Copy <uintptr> v191 (i[uintptr])
      • v209 (48) = IsInBounds <bool> v191 v95
    • If v209b44 b45 (likely) (48)
    • b44: ← b43
      • v212 (48) = PtrIndex <*uint8> v207 v191
      • v213 (48) = Copy <mem> v42
      • v214 (48) = Load <uint8> v212 v42 (x[uint8])
      • v215 (48) = InlMark <void> [5612] v42
      • v216 (+113) = Leq8U <bool> v214 v103 (~R0[bool])
    • Plainb46 (+48)
    • b45: ← b43
      • v210 (48) = Copy <mem> v42
      • v211 (48) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v211 (48)
    • b46: ← b44
      • v217 (48) = Copy <bool> v216 (~R0[bool])
    • Plainb42 (48)
    • b47: ← b42
      • v231 (54) = Copy <*stringStruct> v794 (k[*stringStruct])
      • v232 (54) = Copy <mem> v42
      • v233 (+54) = NilCheck <void> v794 v42
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v794
      • v235 (54) = Load <unsafe.Pointer> v234 v42
      • v236 (54) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v237 (54) = NilCheck <void> v6 v42
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v6
      • v239 (54) = Load <unsafe.Pointer> v238 v42
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b54 b53 (54)
    • b48: ← b42
      • v219 (49) = Copy <*bmap> v57 (b[*bmap])
      • v220 (49) = Copy <mem> v42
      • v221 (+49) = NilCheck <void> v57 v42
      • v222 (49) = OffPtr <*[8]uint8> [0] v57
      • v223 (49) = Copy <uintptr> v191 (i[uintptr])
      • v224 (49) = IsInBounds <bool> v191 v95
    • If v224b51 b52 (likely) (49)
    • b49: ← b51
    • Plainb40 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b48
      • v227 (49) = PtrIndex <*uint8> v222 v191
      • v228 (49) = Copy <mem> v42
      • v229 (49) = Load <uint8> v227 v42
      • v230 (49) = Eq8 <bool> v229 v36
    • If v230b50 b49 (49)
    • b52: ← b48
      • v225 (49) = Copy <mem> v42
      • v226 (49) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v226 (49)
    • b53: ← b47
      • v259 (58) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v260 (58) = Copy <mem> v42
      • v261 (+58) = NilCheck <void> v6 v42
      • v262 (58) = OffPtr <*unsafe.Pointer> [0] v6
      • v263 (58) = Load <unsafe.Pointer> v262 v42
      • v264 (58) = Copy <*[4]byte> v263
      • v265 (58) = Copy <*stringStruct> v794 (k[*stringStruct])
      • v266 (58) = NilCheck <void> v794 v42
      • v267 (58) = OffPtr <*unsafe.Pointer> [0] v794
      • v268 (58) = Load <unsafe.Pointer> v267 v42
      • v269 (58) = Copy <*[4]byte> v268
      • v270 (58) = NilCheck <void> v263 v42
      • v272 (58) = PtrIndex <*byte> v263 v20
      • v273 (58) = Load <byte> v272 v42
      • v274 (58) = Copy <uint8> v273
      • v275 (58) = ZeroExt8to32 <uint32> v273
      • v276 (58) = NilCheck <void> v263 v42
      • v278 (58) = PtrIndex <*byte> v263 v277
      • v279 (58) = Load <byte> v278 v42
      • v280 (58) = Copy <uint8> v279
      • v281 (58) = ZeroExt8to32 <uint32> v279
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v285 (58) = NilCheck <void> v263 v42
      • v287 (58) = PtrIndex <*byte> v263 v286
      • v288 (58) = Load <byte> v287 v42
      • v289 (58) = Copy <uint8> v288
      • v290 (58) = ZeroExt8to32 <uint32> v288
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v294 (58) = NilCheck <void> v263 v42
      • v296 (58) = PtrIndex <*byte> v263 v295
      • v297 (58) = Load <byte> v296 v42
      • v298 (58) = Copy <uint8> v297
      • v299 (58) = ZeroExt8to32 <uint32> v297
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v302 (58) = Or32 <uint32> v293 v301
      • v303 (58) = NilCheck <void> v268 v42
      • v304 (58) = PtrIndex <*byte> v268 v20
      • v305 (58) = Load <byte> v304 v42
      • v306 (58) = Copy <uint8> v305
      • v307 (58) = ZeroExt8to32 <uint32> v305
      • v308 (58) = NilCheck <void> v268 v42
      • v309 (58) = PtrIndex <*byte> v268 v277
      • v310 (58) = Load <byte> v309 v42
      • v311 (58) = Copy <uint8> v310
      • v312 (58) = ZeroExt8to32 <uint32> v310
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v315 (58) = NilCheck <void> v268 v42
      • v316 (58) = PtrIndex <*byte> v268 v286
      • v317 (58) = Load <byte> v316 v42
      • v318 (58) = Copy <uint8> v317
      • v319 (58) = ZeroExt8to32 <uint32> v317
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v322 (58) = NilCheck <void> v268 v42
      • v323 (58) = PtrIndex <*byte> v268 v295
      • v324 (58) = Load <byte> v323 v42
      • v325 (58) = Copy <uint8> v324
      • v326 (58) = ZeroExt8to32 <uint32> v324
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v328 (58) = Or32 <uint32> v321 v327
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b56 (58)
    • b54: ← b47
      • v241 (55) = Copy <*bmap> v57 (b[*bmap])
      • v242 (55) = Copy <unsafe.Pointer> v57 (p[unsafe.Pointer])
      • v243 (55) = Copy <uintptr> v191 (i[uintptr])
      • v244 (55) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v245 (55) = Copy <mem> v42
      • v246 (+55) = NilCheck <void> v8 v42
      • v247 (55) = OffPtr <*uint8> [81] v8
      • v248 (55) = Load <uint8> v247 v42
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v191 v249
      • v251 (55) = Add64 <uintptr> v148 v250 (x[uintptr])
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v254 (18) = Add64 <uintptr> v253 v251
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
    • Plainb55 (+55)
    • b55: ← b54
      • v256 (55) = Copy <unsafe.Pointer> v255 (~R0[unsafe.Pointer])
      • v257 (55) = MakeResult <unsafe.Pointer,mem> v255 v42
      • v258 (55) = Copy <mem> v42
    • Ret v257 (+55)
    • b56: ← b53
      • v330 (62) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v331 (62) = Copy <mem> v42
      • v332 (+62) = NilCheck <void> v6 v42
      • v333 (62) = OffPtr <*unsafe.Pointer> [0] v6
      • v334 (62) = Load <unsafe.Pointer> v333 v42 (p[unsafe.Pointer])
      • v335 (62) = NilCheck <void> v6 v42
      • v336 (62) = OffPtr <*int> [8] v6
      • v337 (62) = Load <int> v336 v42
      • v338 (62) = Copy <uintptr> v337
      • v340 (62) = Sub64 <uintptr> v337 v339 (x[uintptr])
      • v341 (62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v334 v42
      • v343 (18) = Add64 <uintptr> v342 v340
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
    • Plainb58 (+62)
    • b57: ← b53
    • Plainb40 (+59)
    • b58: ← b56
      • v345 (62) = Copy <*stringStruct> v794 (k[*stringStruct])
      • v346 (62) = Copy <mem> v42
      • v347 (62) = NilCheck <void> v794 v42
      • v348 (62) = OffPtr <*unsafe.Pointer> [0] v794
      • v349 (62) = Load <unsafe.Pointer> v348 v42 (p[unsafe.Pointer])
      • v350 (62) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v351 (62) = NilCheck <void> v6 v42
      • v352 (62) = OffPtr <*int> [8] v6
      • v353 (62) = Load <int> v352 v42
      • v354 (62) = Copy <uintptr> v353
      • v355 (62) = Sub64 <uintptr> v353 v339 (x[uintptr])
      • v356 (62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v349 v42
      • v358 (18) = Add64 <uintptr> v357 v355
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
    • Plainb59 (+62)
    • b59: ← b58
      • v360 (62) = Copy <unsafe.Pointer> v344 (~R0[unsafe.Pointer])
      • v361 (62) = Copy <*[4]byte> v344
      • v362 (62) = Copy <unsafe.Pointer> v359 (~R0[unsafe.Pointer])
      • v363 (62) = Copy <*[4]byte> v359
      • v364 (62) = Copy <mem> v42
      • v365 (62) = NilCheck <void> v344 v42
      • v366 (62) = PtrIndex <*byte> v344 v20
      • v367 (62) = Load <byte> v366 v42
      • v368 (62) = Copy <uint8> v367
      • v369 (62) = ZeroExt8to32 <uint32> v367
      • v370 (62) = NilCheck <void> v344 v42
      • v371 (62) = PtrIndex <*byte> v344 v277
      • v372 (62) = Load <byte> v371 v42
      • v373 (62) = Copy <uint8> v372
      • v374 (62) = ZeroExt8to32 <uint32> v372
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v377 (62) = NilCheck <void> v344 v42
      • v378 (62) = PtrIndex <*byte> v344 v286
      • v379 (62) = Load <byte> v378 v42
      • v380 (62) = Copy <uint8> v379
      • v381 (62) = ZeroExt8to32 <uint32> v379
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v376 v382
      • v384 (62) = NilCheck <void> v344 v42
      • v385 (62) = PtrIndex <*byte> v344 v295
      • v386 (62) = Load <byte> v385 v42
      • v387 (62) = Copy <uint8> v386
      • v388 (62) = ZeroExt8to32 <uint32> v386
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v390 (62) = Or32 <uint32> v383 v389
      • v391 (62) = NilCheck <void> v359 v42
      • v392 (62) = PtrIndex <*byte> v359 v20
      • v393 (62) = Load <byte> v392 v42
      • v394 (62) = Copy <uint8> v393
      • v395 (62) = ZeroExt8to32 <uint32> v393
      • v396 (62) = NilCheck <void> v359 v42
      • v397 (62) = PtrIndex <*byte> v359 v277
      • v398 (62) = Load <byte> v397 v42
      • v399 (62) = Copy <uint8> v398
      • v400 (62) = ZeroExt8to32 <uint32> v398
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v403 (62) = NilCheck <void> v359 v42
      • v404 (62) = PtrIndex <*byte> v359 v286
      • v405 (62) = Load <byte> v404 v42
      • v406 (62) = Copy <uint8> v405
      • v407 (62) = ZeroExt8to32 <uint32> v405
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v402 v408
      • v410 (62) = NilCheck <void> v359 v42
      • v411 (62) = PtrIndex <*byte> v359 v295
      • v412 (62) = Load <byte> v411 v42
      • v413 (62) = Copy <uint8> v412
      • v414 (62) = ZeroExt8to32 <uint32> v412
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v416 (62) = Or32 <uint32> v409 v415
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v418 (65) = Copy <uintptr> v789 (keymaybe[uintptr])
      • v419 (+65) = Neq64 <bool> v789 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb40 (+63)
    • b62: ← b60
      • v420 (69) = Copy <uintptr> v191 (i[uintptr], keymaybe[uintptr])
    • Plainb40 (+69)
    • b63: ← b60
    • Plainb64 (+67)
    • b64: ← b63 b9
      • v484 (80) = Copy <unsafe.Pointer> v6 (p[unsafe.Pointer])
      • v485 (80) = Copy <mem> v42
      • v486 (+80) = InlMark <void> [5618] v42
      • v487 (+221) = Convert <uintptr> v6 v42 (x[uintptr])
      • v488 (+222) = Xor64 <uintptr> v487 v75
      • v489 (222) = Convert <unsafe.Pointer> v488 v42 (~R0[unsafe.Pointer])
      • v747 (97) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v765 (80) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v771 (80) = Copy <*hmap> v9 (h[*hmap])
    • Plainb72 (+80)
    • b65: ← b40
      • v427 (46) = Copy <uintptr> v191 (i[uintptr])
      • v428 (46) = Add64 <uintptr> v191 v173 (i[uintptr])
      • v429 (46) = Copy <unsafe.Pointer> v426 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (+77) = PtrIndex <*byte> v479 v20
      • v481 (77) = Copy <unsafe.Pointer> v480
      • v482 (77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b67: ← b41
      • v432 (72) = Copy <*bmap> v57 (b[*bmap])
      • v433 (72) = Copy <unsafe.Pointer> v57 (p[unsafe.Pointer])
      • v434 (72) = Copy <uintptr> v789 (keymaybe[uintptr])
      • v436 (+72) = Mul64 <uintptr> v789 v435
      • v437 (72) = Mul64 <uintptr> v436 v69
      • v438 (72) = Add64 <uintptr> v69 v437 (x[uintptr])
      • v439 (72) = Copy <mem> v42
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v442 (18) = Add64 <uintptr> v441 v438
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (~R0[unsafe.Pointer])
    • Plainb68 (+72)
    • b68: ← b67
      • v444 (72) = Copy <unsafe.Pointer> v443 (~R0[unsafe.Pointer])
      • v445 (72) = Copy <*stringStruct> v443 (k[*stringStruct])
      • v446 (73) = Copy <mem> v42
      • v447 (+73) = NilCheck <void> v443 v42
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v443
      • v449 (73) = Load <unsafe.Pointer> v448 v42
      • v450 (73) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v451 (73) = NilCheck <void> v6 v42
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v6
      • v453 (73) = Load <unsafe.Pointer> v452 v42
      • v454 (73) = NilCheck <void> v6 v42
      • v455 (73) = OffPtr <*int> [8] v6
      • v456 (73) = Load <int> v455 v42
      • v457 (73) = Copy <uintptr> v456
      • v458 (73) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v456 v42
      • v459 (73) = SelectN <mem> [1] v458
      • v460 (73) = SelectN <bool> [0] v458
    • If v460b70 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b70: ← b68
      • v461 (74) = Copy <*bmap> v57 (b[*bmap])
      • v462 (74) = Copy <unsafe.Pointer> v57 (p[unsafe.Pointer])
      • v463 (74) = Copy <uintptr> v789 (keymaybe[uintptr])
      • v464 (74) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v465 (74) = Copy <mem> v459
      • v466 (+74) = NilCheck <void> v8 v459
      • v467 (74) = OffPtr <*uint8> [81] v8
      • v468 (74) = Load <uint8> v467 v459
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v789 v469
      • v471 (74) = Add64 <uintptr> v148 v470 (x[uintptr])
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v474 (18) = Add64 <uintptr> v473 v471
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
    • Plainb71 (+74)
    • b71: ← b70
      • v476 (74) = Copy <unsafe.Pointer> v475 (~R0[unsafe.Pointer])
      • v477 (74) = MakeResult <unsafe.Pointer,mem> v475 v459
      • v478 (74) = Copy <mem> v459
    • Ret v477 (+74)
    • b72: ← b64
      • v490 (80) = Copy <*hmap> v9 (h[*hmap])
      • v491 (80) = Copy <mem> v42
      • v492 (80) = NilCheck <void> v9 v42
      • v493 (80) = OffPtr <*uint32> [12] v9
      • v494 (80) = Load <uint32> v493 v42
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v496 (80) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v497 (80) = NilCheck <void> v8 v42
      • v498 (80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v8
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v42
      • v500 (80) = Copy <unsafe.Pointer> v489 (~R0[unsafe.Pointer])
      • v501 (80) = Load <uintptr> v499 v42
      • v502 (80) = ClosureLECall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v489 v495 v42
      • v503 (80) = SelectN <mem> [1] v502
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr])
      • v505 (+81) = NilCheck <void> v9 v503
      • v506 (81) = OffPtr <*uint8> [9] v9
      • v507 (81) = Load <uint8> v506 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (+187) = And8 <uint8> v507 v510
      • v512 (187) = Lsh64x8 <uintptr> [false] v173 v511 (~R0[uintptr])
    • Plainb73 (+192)
    • b73: ← b72
      • v513 (192) = Copy <uintptr> v512 (~R0[uintptr])
      • v514 (192) = Sub64 <uintptr> v512 v173 (~R0[uintptr])
    • Plainb74 (+81)
    • b74: ← b73
      • v515 (81) = Copy <uintptr> v514 (m[uintptr], ~R0[uintptr])
      • v516 (82) = Copy <*hmap> v9 (h[*hmap])
      • v517 (82) = Copy <mem> v503
      • v518 (+82) = NilCheck <void> v9 v503
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v9
      • v520 (82) = Load <unsafe.Pointer> v519 v503 (p[unsafe.Pointer])
      • v521 (82) = Copy <uintptr> v504 (hash[uintptr])
      • v522 (82) = And64 <uintptr> v504 v514
      • v523 (82) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v524 (82) = NilCheck <void> v8 v503
      • v525 (82) = OffPtr <*uint16> [82] v8
      • v526 (82) = Load <uint16> v525 v503
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v529 (82) = InlMark <void> [5620] v503
      • v530 (+18) = Convert <uintptr> v520 v503
      • v531 (18) = Add64 <uintptr> v530 v528
      • v532 (18) = Convert <unsafe.Pointer> v531 v503 (~R0[unsafe.Pointer])
    • Plainb75 (+82)
    • b75: ← b74
      • v533 (82) = Copy <unsafe.Pointer> v532 (~R0[unsafe.Pointer])
      • v534 (82) = Copy <*bmap> v532 (b[*bmap])
      • v535 (83) = Copy <*hmap> v9 (h[*hmap])
      • v536 (83) = Copy <mem> v503
      • v537 (+83) = NilCheck <void> v9 v503
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v9
      • v539 (83) = Load <unsafe.Pointer> v538 v503 (c[unsafe.Pointer])
      • v540 (83) = NeqPtr <bool> v539 v12
    • If v540b77 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v584 (93) = Copy <uintptr> v504 (hash[uintptr], hash[uintptr])
      • v585 (93) = Copy <mem> v503
      • v586 (+93) = InlMark <void> [5624] v503
      • v588 (+197) = Rsh64Ux64 <uintptr> [false] v504 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (+198) = Less8U <bool> v589 v579
      • v724 (101) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v746 (97) = Copy <*stringStruct> v6 (key[*stringStruct])
    • If v590b88 b87 (198)
    • b77: ← b75
      • v541 (84) = Copy <*hmap> v9 (h[*hmap], h[*hmap])
      • v542 (84) = Copy <mem> v503
      • v543 (+84) = InlMark <void> [5621] v503
      • v544 (+1128) = NilCheck <void> v9 v503
      • v545 (1128) = OffPtr <*uint8> [8] v9
      • v546 (1128) = Load <uint8> v545 v503
      • v548 (1128) = And8 <uint8> v546 v547
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • Plainb78 (+84)
    • b78: ← b77
      • v550 (84) = Copy <bool> v549 (~R0[bool])
    • If v550b79 b80 (84)
    • b79: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v553 (m[uintptr])
      • v554 (88) = Copy <unsafe.Pointer> v539 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v555 (88) = Copy <uintptr> v504 (hash[uintptr])
      • v557 (+88) = And64 <uintptr> v504 v556
      • v558 (88) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v559 (88) = Copy <mem> v503
      • v560 (88) = NilCheck <void> v8 v503
      • v561 (88) = OffPtr <*uint16> [82] v8
      • v562 (88) = Load <uint16> v561 v503
      • v563 (88) = ZeroExt16to64 <uintptr> v562
      • v564 (88) = Mul64 <uintptr> v557 v563 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v566 (+18) = Convert <uintptr> v539 v503
      • v567 (18) = Add64 <uintptr> v566 v564
      • v568 (18) = Convert <unsafe.Pointer> v567 v503 (~R0[unsafe.Pointer])
      • v750 (97) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v759 (94) = Copy <*bmap> v532 (b[*bmap])
    • Plainb81 (+88)
    • b80: ← b78
      • v551 (86) = Copy <uintptr> v514 (m[uintptr])
      • v553 (+86) = Rsh64Ux64 <uintptr> [false] v514 v552 (m[uintptr])
    • Plainb79 (86)
    • b81: ← b79
      • v569 (88) = Copy <unsafe.Pointer> v568 (~R0[unsafe.Pointer])
      • v570 (88) = Copy <*bmap> v568 (oldb[*bmap], b[*bmap])
      • v571 (89) = Copy <mem> v503
      • v572 (+89) = InlMark <void> [5623] v503
      • v573 (+205) = NilCheck <void> v568 v503
      • v574 (205) = OffPtr <*[8]uint8> [0] v568
      • v575 (205) = PtrIndex <*uint8> v574 v20
      • v576 (205) = Load <uint8> v575 v503 (h[uint8])
      • v577 (+206) = Less8U <bool> v103 v576
    • If v577b83 b82 (206)
    • b82: ← b81 b83
      • v581 (89) = Phi <bool> v577 v580 (~R0[bool])
      • v726 (101) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v749 (97) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v758 (94) = Copy <*bmap> v532 (b[*bmap])
      • v760 (90) = Copy <*bmap> v568 (oldb[*bmap])
      • v762 (93) = Copy <mem> v503
      • v764 (93) = Copy <uintptr> v504 (hash[uintptr])
    • Plainb84 (+89)
    • b83: ← b81
      • v578 (206) = Copy <uint8> v576 (h[uint8])
      • v580 (206) = Less8U <bool> v576 v579
    • Plainb82 (206)
    • b84: ← b82
      • v582 (89) = Copy <bool> v581 (~R0[bool])
    • If v582b85 b86 (89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
      • v725 (101) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v748 (97) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v761 (93) = Copy <mem> v503
      • v763 (93) = Copy <uintptr> v504 (hash[uintptr])
    • Plainb76
    • b86: ← b84
      • v583 (90) = Copy <*bmap> v568 (b[*bmap], oldb[*bmap])
    • Plainb85 (+90)
    • b87: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (top[uint8], ~R0[uint8])
      • v723 (101) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v745 (97) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v754 (105) = Copy <mem> v503
      • v755 (94) = Copy <*bmap> v756 (b[*bmap])
    • Plainb89 (+93)
    • b88: ← b76
      • v591 (199) = Copy <uint8> v589 (top[uint8])
      • v592 (+199) = Add8 <uint8> v589 v579 (top[uint8])
    • Plainb87 (199)
    • b89: ← b87
      • v594 (93) = Copy <uint8> v593 (top[uint8], ~R0[uint8])
    • Plainb90 (+94)
    • b90: ← b89 b113
      • v595 (94) = Phi <*bmap> v756 v707 (b[*bmap])
      • v753 (105) = Phi <mem> v503 v751
      • v597 (+94) = NeqPtr <bool> v595 v596
      • v721 (101) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v735 (97) = Copy <uint8> v593 (top[uint8])
      • v742 (97) = Copy <*stringStruct> v6 (key[*stringStruct])
    • If v597b91 b93 (likely) (94)
    • b91: ← b90
      • v598 (95) = Copy <*bmap> v595 (b[*bmap], b[*bmap])
      • v599 (95) = Copy <mem> v753
      • v600 (+95) = InlMark <void> [5626] v753
      • v601 (218) = Copy <unsafe.Pointer> v595 (p[unsafe.Pointer])
      • v602 (+218) = InlMark <void> [5633] v753
      • v603 (+18) = Convert <uintptr> v595 v753
      • v604 (18) = Add64 <uintptr> v603 v69
      • v605 (18) = Convert <unsafe.Pointer> v604 v753 (~R0[unsafe.Pointer])
    • Plainb94 (+218)
    • b92: ← b99
      • v689 (94) = Copy <*bmap> v595 (b[*bmap], b[*bmap])
      • v690 (94) = Copy <*abi.MapType> v8 (t[*abi.MapType], t[*abi.MapType])
      • v691 (94) = Copy <mem> v751
      • v692 (+94) = InlMark <void> [5625] v751
      • v693 (210) = Copy <unsafe.Pointer> v595 (p[unsafe.Pointer])
      • v694 (+210) = NilCheck <void> v8 v751
      • v695 (210) = OffPtr <*uint16> [82] v8
      • v696 (210) = Load <uint16> v695 v751
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v698 (210) = Sub64 <uintptr> v697 v69 (x[uintptr])
      • v699 (210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v595 v751
      • v701 (18) = Add64 <uintptr> v700 v698
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
    • Plainb112 (+210)
    • b93: ← b90
      • v710 (+105) = PtrIndex <*byte> v709 v20
      • v711 (105) = Copy <unsafe.Pointer> v710
      • v712 (105) = MakeResult <unsafe.Pointer,mem> v710 v753
      • v713 (105) = Copy <mem> v753
    • Ret v712 (+105)
    • b94: ← b91
      • v606 (95) = Copy <unsafe.Pointer> v605 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb95 (+95)
    • b95: ← b94
      • v607 (95) = Copy <unsafe.Pointer> v605 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v753 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (kptr[unsafe.Pointer])
      • v609 (+95) = Less64U <bool> v608 v69
      • v720 (101) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v729 (101) = Copy <*bmap> v595 (b[*bmap])
      • v734 (97) = Copy <uint8> v593 (top[uint8])
      • v741 (97) = Copy <*stringStruct> v6 (key[*stringStruct])
    • If v609b97 b99 (likely) (95)
    • b97: ← b96
      • v610 (96) = Copy <unsafe.Pointer> v752 (kptr[unsafe.Pointer])
      • v611 (96) = Copy <*stringStruct> v752 (k[*stringStruct])
      • v612 (97) = Copy <mem> v751
      • v613 (+97) = NilCheck <void> v752 v751
      • v614 (97) = OffPtr <*int> [8] v752
      • v615 (97) = Load <int> v614 v751
      • v616 (97) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v617 (97) = NilCheck <void> v6 v751
      • v618 (97) = OffPtr <*int> [8] v6
      • v619 (97) = Load <int> v618 v751
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b100 b101 (97)
    • b98: ← b105 b108
      • v681 (95) = Phi <mem> v751 v717
      • v680 (95) = Copy <unsafe.Pointer> v752 (p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v682 (+95) = InlMark <void> [5627] v681
      • v683 (+18) = Convert <uintptr> v752 v681
      • v684 (18) = Add64 <uintptr> v683 v166
      • v685 (18) = Convert <unsafe.Pointer> v684 v681 (~R0[unsafe.Pointer])
      • v714 (95) = Copy <uintptr> v608 (i[uintptr])
      • v722 (101) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v730 (101) = Copy <*bmap> v595 (b[*bmap])
      • v736 (97) = Copy <uint8> v593 (top[uint8])
      • v743 (97) = Copy <*stringStruct> v6 (key[*stringStruct])
    • Plainb111 (+95)
    • b99: ← b96
    • Plainb92 (95)
    • b100: ← b97 b102
      • v634 (97) = Phi <bool> v620 v633
      • v715 (95) = Copy <uintptr> v608 (i[uintptr])
      • v719 (101) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v728 (101) = Copy <*bmap> v595 (b[*bmap])
      • v731 (100) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v732 (100) = Copy <mem> v751
      • v733 (100) = Copy <*stringStruct> v752 (k[*stringStruct])
      • v737 (97) = Copy <uint8> v593 (top[uint8])
      • v739 (95) = Copy <unsafe.Pointer> v752 (kptr[unsafe.Pointer])
    • If v634b105 b104 (97)
    • b101: ← b97
      • v621 (97) = Copy <*bmap> v595 (b[*bmap])
      • v622 (97) = Copy <mem> v751
      • v623 (97) = NilCheck <void> v595 v751
      • v624 (97) = OffPtr <*[8]uint8> [0] v595
      • v625 (97) = Copy <uintptr> v608 (i[uintptr])
      • v626 (97) = IsInBounds <bool> v608 v95
    • If v626b102 b103 (likely) (97)
    • b102: ← b101
      • v629 (97) = PtrIndex <*uint8> v624 v608
      • v630 (97) = Copy <mem> v751
      • v631 (97) = Load <uint8> v629 v751
      • v632 (97) = Copy <uint8> v593 (top[uint8])
      • v633 (97) = Neq8 <bool> v631 v593
    • Plainb100 (97)
    • b103: ← b101
      • v627 (97) = Copy <mem> v751
      • v628 (97) = PanicBounds <mem> [1] v608 v95 v751
    • Exit v628 (97)
    • b104: ← b100
      • v635 (100) = Copy <*stringStruct> v752 (k[*stringStruct])
      • v636 (100) = Copy <mem> v751
      • v637 (+100) = NilCheck <void> v752 v751
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v639 (100) = Load <unsafe.Pointer> v638 v751
      • v640 (100) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v641 (100) = NilCheck <void> v6 v751
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v643 (100) = Load <unsafe.Pointer> v642 v751
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b106 b107 (100)
    • b105: ← b100
    • Plainb98 (+98)
    • b106: ← b104 b107
      • v661 (100) = Phi <bool> v644 v660
      • v717 (101) = Phi <mem> v751 v659
      • v716 (95) = Copy <uintptr> v608 (i[uintptr])
      • v718 (101) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v727 (101) = Copy <*bmap> v595 (b[*bmap])
      • v738 (97) = Copy <uint8> v593 (top[uint8])
      • v740 (95) = Copy <unsafe.Pointer> v752 (kptr[unsafe.Pointer])
      • v744 (97) = Copy <*stringStruct> v6 (key[*stringStruct])
    • If v661b109 b108 (100)
    • b107: ← b104
      • v645 (100) = Copy <*stringStruct> v752 (k[*stringStruct])
      • v646 (100) = Copy <mem> v751
      • v647 (100) = NilCheck <void> v752 v751
      • v648 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v649 (100) = Load <unsafe.Pointer> v648 v751
      • v650 (100) = Copy <*stringStruct> v6 (key[*stringStruct])
      • v651 (100) = NilCheck <void> v6 v751
      • v652 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v653 (100) = Load <unsafe.Pointer> v652 v751
      • v654 (100) = NilCheck <void> v6 v751
      • v655 (100) = OffPtr <*int> [8] v6
      • v656 (100) = Load <int> v655 v751
      • v657 (100) = Copy <uintptr> v656
      • v658 (100) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v649 v653 v656 v751
      • v659 (100) = SelectN <mem> [1] v658
      • v660 (100) = SelectN <bool> [0] v658
    • Plainb106 (100)
    • b108: ← b106
    • Plainb98 (100)
    • b109: ← b106
      • v662 (101) = Copy <*bmap> v595 (b[*bmap])
      • v663 (101) = Copy <unsafe.Pointer> v595 (p[unsafe.Pointer])
      • v664 (101) = Copy <uintptr> v608 (i[uintptr])
      • v665 (101) = Copy <*abi.MapType> v8 (t[*abi.MapType])
      • v666 (101) = Copy <mem> v717
      • v667 (+101) = NilCheck <void> v8 v717
      • v668 (101) = OffPtr <*uint8> [81] v8
      • v669 (101) = Load <uint8> v668 v717
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v608 v670
      • v672 (101) = Add64 <uintptr> v148 v671 (x[uintptr])
      • v673 (101) = InlMark <void> [5628] v717
      • v674 (+18) = Convert <uintptr> v595 v717
      • v675 (18) = Add64 <uintptr> v674 v672
      • v676 (18) = Convert <unsafe.Pointer> v675 v717 (~R0[unsafe.Pointer])
    • Plainb110 (+101)
    • b110: ← b109
      • v677 (101) = Copy <unsafe.Pointer> v676 (~R0[unsafe.Pointer])
      • v678 (101) = MakeResult <unsafe.Pointer,mem> v676 v717
      • v679 (101) = Copy <mem> v717
    • Ret v678 (+101)
    • b111: ← b98
      • v686 (95) = Copy <uintptr> v608 (i[uintptr])
      • v687 (95) = Add64 <uintptr> v608 v173 (i[uintptr])
      • v688 (95) = Copy <unsafe.Pointer> v685 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb96 (95)
    • b112: ← b92
      • v703 (210) = Copy <unsafe.Pointer> v702 (~R0[unsafe.Pointer])
      • v704 (210) = Copy <**bmap> v702
      • v705 (210) = Copy <mem> v751
      • v706 (210) = NilCheck <void> v702 v751
      • v707 (210) = Load <*bmap> v702 v751 (~R0[*bmap])
    • Plainb113 (+94)
    • b113: ← b112
      • v708 (94) = Copy <*bmap> v707 (~R0[*bmap], b[*bmap])
    • Plainb90 (94)
  • name t[*abi.MapType]: v8 v150 v244 v464 v496 v523 v558 v665 v690 v718 v719 v720 v721 v722 v723 v724 v725 v726 v765 v766 v767 v768 v769 v770 v775 v799 v800 v801 v802
  • name h[*hmap]: v9 v15 v29 v47 v53 v490 v516 v535 v541 v771 v772 v773 v774 v817 v819
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v45 v46
  • name key[*stringStruct]: v46 v59 v85 v124 v134 v199 v236 v259 v330 v350 v450 v616 v640 v650 v731 v741 v742 v743 v744 v745 v746 v747 v748 v749 v750 v776 v777 v778 v779 v808 v813 v814 v815
  • name b[*bmap]: v58 v65 v90 v107 v146 v181 v204 v219 v241 v432 v461 v782 v783 v784 v785 v803 v804 v805 v806
  • name b[*bmap]: v65
  • name p[unsafe.Pointer]: v68
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73 v74
  • name ~R0[unsafe.Pointer]: v74 v76
  • name i[uintptr]: v75 v77 v94 v111 v149 v172 v174 v795 v796 v797
  • name kptr[unsafe.Pointer]: v76 v79 v165 v175 v811 v812 v816
  • name k[*stringStruct]: v80 v119 v129 v809
  • name x[uint8]: v101
  • name ~R0[bool]: v104 v105
  • name p[unsafe.Pointer]: v147
  • name x[uintptr]: v157
  • name ~R0[unsafe.Pointer]: v161 v162
  • name p[unsafe.Pointer]: v165
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v171 v175
  • name keymaybe[uintptr]: v69 v418 v420 v430 v434 v463 v788 v789 v790
  • name b[*bmap]: v181
  • name p[unsafe.Pointer]: v184
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188 v189
  • name ~R0[unsafe.Pointer]: v189 v190
  • name i[uintptr]: v75 v191 v208 v223 v243 v420 v427 v428 v786 v787
  • name kptr[unsafe.Pointer]: v190 v193 v421 v429 v793 v794
  • name k[*stringStruct]: v194 v231 v265 v345 v792
  • name x[uint8]: v214
  • name ~R0[bool]: v216 v217
  • name p[unsafe.Pointer]: v242
  • name x[uintptr]: v251
  • name ~R0[unsafe.Pointer]: v255 v256
  • name p[unsafe.Pointer]: v334
  • name x[uintptr]: v340
  • name ~R0[unsafe.Pointer]: v344 v360
  • name p[unsafe.Pointer]: v349
  • name x[uintptr]: v355
  • name ~R0[unsafe.Pointer]: v359 v362
  • name p[unsafe.Pointer]: v421
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v426 v429
  • name p[unsafe.Pointer]: v433
  • name x[uintptr]: v438
  • name ~R0[unsafe.Pointer]: v443 v444
  • name k[*stringStruct]: v445
  • name p[unsafe.Pointer]: v462
  • name x[uintptr]: v471
  • name ~R0[unsafe.Pointer]: v475 v476
  • name p[unsafe.Pointer]: v484
  • name x[uintptr]: v487
  • name ~R0[unsafe.Pointer]: v489 v500
  • name hash[uintptr]: v504 v521 v555 v584 v763 v764
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512 v513
  • name ~R0[uintptr]: v514 v515
  • name m[uintptr]: v515 v551 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532 v533
  • name b[*bmap]: v534 v583 v595 v598 v621 v662 v689 v708 v727 v728 v729 v730 v755 v756 v757 v758 v759
  • name c[unsafe.Pointer]: v539 v554
  • name h[*hmap]: v541
  • name ~R0[bool]: v549 v550
  • name p[unsafe.Pointer]: v554
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568 v569
  • name oldb[*bmap]: v570 v583 v760
  • name b[*bmap]: v570
  • name h[uint8]: v576 v578
  • name ~R0[bool]: v581 v582
  • name hash[uintptr]: v584
  • name top[uint8]: v589 v591 v592 v593
  • name ~R0[uint8]: v593 v594
  • name top[uint8]: v594 v632 v734 v735 v736 v737 v738
  • name b[*bmap]: v598
  • name p[unsafe.Pointer]: v601
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605 v606
  • name ~R0[unsafe.Pointer]: v606 v607
  • name i[uintptr]: v75 v608 v625 v664 v686 v687 v714 v715 v716
  • name kptr[unsafe.Pointer]: v607 v610 v680 v688 v739 v740 v752
  • name k[*stringStruct]: v611 v635 v645 v733
  • name p[unsafe.Pointer]: v663
  • name x[uintptr]: v672
  • name ~R0[unsafe.Pointer]: v676 v677
  • name p[unsafe.Pointer]: v680
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v685 v688
  • name b[*bmap]: v689
  • name t[*abi.MapType]: v690
  • name p[unsafe.Pointer]: v693
  • name x[uintptr]: v698
  • name ~R0[unsafe.Pointer]: v702 v703
  • name ~R0[*bmap]: v707 v708
  • early copyelim [24216 ns]

    b1 b1 If b2 b2 If b1->b2 0 b3 b3 Plain b1->b3 1 b5 b5 Ret b2->b5 0 b4 b4 If b2->b4 1 b3->b2 0 b7 b7 Plain b4->b7 0 b6 b6 Plain b4->b6 1 b8 b8 If b6->b8 0 b7->b6 0 b10 b10 If b8->b10 0 b9 b9 Plain b8->b9 1 b64 b64 Plain b9->b64 0 b12 b12 Plain b10->b12 0 b11 b11 Plain b10->b11 1 b36 b36 Plain b11->b36 0 b13 b13 Plain b12->b13 0 b14 b14 Plain b13->b14 0 b15 b15 If b14->b15 0 b16 b16 If b15->b16 0 b18 b18 Ret b15->b18 1 b19 b19 If b16->b19 0 b20 b20 If b16->b20 1 b17 b17 Plain b35 b35 Plain b17->b35 0 b25 b25 If b19->b25 0 b24 b24 If b19->b24 1 b21 b21 Plain b20->b21 0 b22 b22 Exit b20->b22 1 b23 b23 Plain b21->b23 0 b23->b19 0 b30 b30 If b24->b30 0 b31 b31 Plain b24->b31 1 b28 b28 If b25->b28 0 b29 b29 Exit b25->b29 1 b26 b26 Plain b26->b17 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b33 b33 Plain b30->b33 0 b32 b32 Plain b30->b32 1 b31->b30 0 b32->b17 0 b34 b34 Ret b33->b34 0 b35->b15 0 b37 b37 Plain b36->b37 0 b38 b38 If b37->b38 0 b39 b39 If b38->b39 0 b41 b41 If b38->b41 1 b42 b42 If b39->b42 0 b43 b43 If b39->b43 1 b40 b40 Plain b65 b65 Plain b40->b65 0 b67 b67 Plain b41->b67 0 b66 b66 Ret b41->b66 1 b48 b48 If b42->b48 0 b47 b47 If b42->b47 1 b44 b44 Plain b43->b44 0 b45 b45 Exit b43->b45 1 b46 b46 Plain b44->b46 0 b46->b42 0 b54 b54 Plain b47->b54 0 b53 b53 If b47->b53 1 b51 b51 If b48->b51 0 b52 b52 Exit b48->b52 1 b49 b49 Plain b49->b40 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b56 b56 Plain b53->b56 1 b55 b55 Ret b54->b55 0 b58 b58 Plain b56->b58 0 b57->b40 0 b59 b59 If b58->b59 0 b61 b61 Plain b59->b61 0 b60 b60 If b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b40 0 b62->b40 0 b63->b64 0 b72 b72 Plain b64->b72 0 b65->b38 0 b68 b68 If b67->b68 0 b70 b70 Plain b68->b70 0 b69 b69 Plain b68->b69 1 b69->b66 0 b71 b71 Ret b70->b71 0 b73 b73 Plain b72->b73 0 b74 b74 Plain b73->b74 0 b75 b75 If b74->b75 0 b77 b77 Plain b75->b77 0 b76 b76 If b75->b76 1 b88 b88 Plain b76->b88 0 b87 b87 Plain b76->b87 1 b78 b78 If b77->b78 0 b79 b79 Plain b78->b79 0 b80 b80 Plain b78->b80 1 b81 b81 If b79->b81 0 b80->b79 0 b83 b83 Plain b81->b83 0 b82 b82 Plain b81->b82 1 b84 b84 If b82->b84 0 b83->b82 0 b85 b85 Plain b84->b85 0 b86 b86 Plain b84->b86 1 b85->b76 0 b86->b85 0 b89 b89 Plain b87->b89 0 b88->b87 0 b90 b90 If b89->b90 0 b91 b91 Plain b90->b91 0 b93 b93 Ret b90->b93 1 b94 b94 Plain b91->b94 0 b92 b92 Plain b112 b112 Plain b92->b112 0 b95 b95 Plain b94->b95 0 b96 b96 If b95->b96 0 b97 b97 If b96->b97 0 b99 b99 Plain b96->b99 1 b100 b100 If b97->b100 0 b101 b101 If b97->b101 1 b98 b98 Plain b111 b111 Plain b98->b111 0 b99->b92 0 b105 b105 Plain b100->b105 0 b104 b104 If b100->b104 1 b102 b102 Plain b101->b102 0 b103 b103 Exit b101->b103 1 b102->b100 0 b106 b106 If b104->b106 0 b107 b107 Plain b104->b107 1 b105->b98 0 b109 b109 Plain b106->b109 0 b108 b108 Plain b106->b108 1 b107->b106 0 b108->b98 0 b110 b110 Ret b109->b110 0 b111->b96 0 b113 b113 Plain b112->b113 0 b113->b90 0
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v4 (?) = LocalAddr <**abi.MapType> {t} v2 v1
      • v5 (?) = LocalAddr <**hmap> {h} v2 v1
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (~R0[*stringStruct], p[unsafe.Pointer], key[*stringStruct], sp[*string])
      • v7 (?) = LocalAddr <*unsafe.Pointer> {~r0} v2 v1
      • v8 (13) = Arg <*abi.MapType> {t} (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = Arg <*hmap> {h} (h[*hmap], h[*hmap])
      • v10 (13) = Arg <string> {ky}
      • v11 (+13) = Store <mem> {string} v6 v10 v1
      • v12 (?) = ConstNil <unsafe.Pointer>
      • v13 (?) = ConstNil <*hmap>
      • v14 (+18) = EqPtr <bool> v9 v13
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v24 (?) = Const64 <int> [1024]
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v38 (?) = ConstString <string> {"concurrent map read and map write"}
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (x[uintptr], keymaybe[uintptr], x[uintptr], x[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v95 (?) = Const64 <int> [8]
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v166 (?) = Const64 <uintptr> [16] (x[uintptr], x[uintptr], x[uintptr])
      • v173 (?) = Const64 <uintptr> [1]
      • v176 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v271 (?) = Const64 <int> [4]
      • v277 (?) = Const64 <int> [1]
      • v282 (?) = Const64 <uint> [8]
      • v286 (?) = Const64 <int> [2]
      • v291 (?) = Const64 <uint> [16]
      • v295 (?) = Const64 <int> [3]
      • v300 (?) = Const64 <uint> [24]
      • v339 (?) = Const64 <uintptr> [4]
      • v435 (?) = Const64 <uintptr> [2]
      • v479 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v596 (?) = ConstNil <*bmap>
      • v709 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
    • If v14b2 b3 (18)
    • b2: ← b1 b3
      • v22 (18) = Phi <bool> v14 v21
      • v768 (80) = Copy <*abi.MapType> v8
      • v818 (19) = Copy <mem> v11
      • v819 (21) = Copy <*hmap> v9
    • If v22b5 b4 (18)
    • b3: ← b1
      • v15 (18) = Copy <*hmap> v9
      • v16 (18) = Copy <mem> v11
      • v17 (18) = NilCheck <void> v9 v11
      • v18 (18) = OffPtr <*int> [0] v9
      • v19 (18) = Load <int> v18 v11
      • v21 (18) = Eq64 <bool> v19 v20
    • Plainb2 (18)
    • b4: ← b2
      • v29 (21) = Copy <*hmap> v9
      • v30 (21) = Copy <mem> v11
      • v31 (+21) = NilCheck <void> v9 v11
      • v32 (21) = OffPtr <*uint8> [8] v9
      • v33 (21) = Load <uint8> v32 v11
      • v35 (21) = And8 <uint8> v33 v34
      • v37 (21) = Neq8 <bool> v35 v36
    • If v37b7 b6 (21)
    • b5: ← b2
      • v25 (+19) = PtrIndex <*byte> v23 v20
      • v26 (19) = Copy <unsafe.Pointer> v25
      • v27 (19) = MakeResult <unsafe.Pointer,mem> v25 v11
      • v28 (19) = Copy <mem> v11
    • Ret v27 (+19)
    • b6: ← b4 b7
      • v42 (24) = Phi <mem> v11 v41
      • v43 (+24) = InlMark <void> [5605] v42
      • v44 (244) = Copy <unsafe.Pointer> v6
      • v45 (244) = Copy <*stringStruct> v6
      • v767 (80) = Copy <*abi.MapType> v8
      • v817 (25) = Copy <*hmap> v9
    • Plainb8 (+24)
    • b7: ← b4
      • v39 (22) = Copy <mem> v11
      • v40 (+22) = StaticLECall <mem> {AuxCall{runtime.fatal}} [16] v38 v11
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb6 (22)
    • b8: ← b6
      • v46 (24) = Copy <*stringStruct> v6
      • v47 (25) = Copy <*hmap> v9
      • v48 (25) = Copy <mem> v42
      • v49 (+25) = NilCheck <void> v9 v42
      • v50 (25) = OffPtr <*uint8> [9] v9
      • v51 (25) = Load <uint8> v50 v42
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb64 (25)
    • b10: ← b8
      • v53 (27) = Copy <*hmap> v9
      • v54 (27) = Copy <mem> v42
      • v55 (+27) = NilCheck <void> v9 v42
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v9
      • v57 (27) = Load <unsafe.Pointer> v56 v42 (b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer])
      • v58 (27) = Copy <*bmap> v57
      • v59 (28) = Copy <*stringStruct> v6
      • v60 (+28) = NilCheck <void> v6 v42
      • v61 (28) = OffPtr <*int> [8] v6
      • v62 (28) = Load <int> v61 v42
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b12 b11 (28)
    • b11: ← b10
      • v181 (46) = Copy <*bmap> v57
      • v182 (46) = Copy <mem> v42
      • v183 (+46) = InlMark <void> [5610] v42
      • v184 (218) = Copy <unsafe.Pointer> v57
      • v185 (+218) = InlMark <void> [5630] v42
      • v186 (+18) = Convert <uintptr> v57 v42
      • v187 (18) = Add64 <uintptr> v186 v69
      • v188 (18) = Convert <unsafe.Pointer> v187 v42 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb36 (+218)
    • b12: ← b10
      • v65 (30) = Copy <*bmap> v57
      • v66 (30) = Copy <mem> v42
      • v67 (+30) = InlMark <void> [5606] v42
      • v68 (218) = Copy <unsafe.Pointer> v57
      • v70 (+218) = InlMark <void> [5629] v42
      • v71 (+18) = Convert <uintptr> v57 v42
      • v72 (18) = Add64 <uintptr> v71 v69
      • v73 (18) = Convert <unsafe.Pointer> v72 v42 (~R0[unsafe.Pointer], kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb13 (+218)
    • b13: ← b12
      • v74 (30) = Copy <unsafe.Pointer> v73
    • Plainb14 (+30)
    • b14: ← b13
      • v76 (30) = Copy <unsafe.Pointer> v73
    • Plainb15 (30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v78 (+30) = Less64U <bool> v77 v69
      • v801 (39) = Copy <*abi.MapType> v8
      • v805 (39) = Copy <*bmap> v57
      • v813 (32) = Copy <*stringStruct> v6
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v79 (31) = Copy <unsafe.Pointer> v816
      • v80 (31) = Copy <*stringStruct> v816
      • v81 (32) = Copy <mem> v810
      • v82 (+32) = NilCheck <void> v816 v810
      • v83 (32) = OffPtr <*int> [8] v816
      • v84 (32) = Load <int> v83 v810
      • v85 (32) = Copy <*stringStruct> v6
      • v86 (32) = NilCheck <void> v6 v810
      • v87 (32) = OffPtr <*int> [8] v6
      • v88 (32) = Load <int> v87 v810
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b19 b20 (32)
    • b17: ← b26 b32
      • v167 (30) = Phi <mem> v810 v798
      • v165 (30) = Copy <unsafe.Pointer> v816
      • v168 (+30) = InlMark <void> [5607] v167
      • v169 (+18) = Convert <uintptr> v816 v167
      • v170 (18) = Add64 <uintptr> v169 v166
      • v171 (18) = Convert <unsafe.Pointer> v170 v167 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v795 (30) = Copy <uintptr> v77
      • v802 (39) = Copy <*abi.MapType> v8
      • v806 (39) = Copy <*bmap> v57
      • v814 (32) = Copy <*stringStruct> v6
    • Plainb35 (+30)
    • b18: ← b15 b27
      • v177 (+42) = PtrIndex <*byte> v176 v20
      • v178 (42) = Copy <unsafe.Pointer> v177
      • v179 (42) = MakeResult <unsafe.Pointer,mem> v177 v810
      • v180 (42) = Copy <mem> v810
    • Ret v179 (+42)
    • b19: ← b16 b23
      • v106 (32) = Phi <bool> v89 v104
      • v797 (30) = Copy <uintptr> v77
      • v800 (39) = Copy <*abi.MapType> v8
      • v804 (39) = Copy <*bmap> v57
      • v807 (33) = Copy <mem> v810
      • v808 (38) = Copy <*stringStruct> v6
      • v809 (38) = Copy <*stringStruct> v816
      • v811 (30) = Copy <unsafe.Pointer> v816
    • If v106b25 b24 (32)
    • b20: ← b16
      • v90 (32) = Copy <*bmap> v57
      • v91 (32) = Copy <mem> v810
      • v92 (32) = NilCheck <void> v57 v810
      • v93 (32) = OffPtr <*[8]uint8> [0] v57
      • v94 (32) = Copy <uintptr> v77
      • v96 (32) = IsInBounds <bool> v77 v95
    • If v96b21 b22 (likely) (32)
    • b21: ← b20
      • v99 (32) = PtrIndex <*uint8> v93 v77
      • v100 (32) = Copy <mem> v810
      • v101 (32) = Load <uint8> v99 v810 (x[uint8])
      • v102 (32) = InlMark <void> [5608] v810
      • v104 (+113) = Leq8U <bool> v101 v103 (~R0[bool])
    • Plainb23 (+32)
    • b22: ← b20
      • v97 (32) = Copy <mem> v810
      • v98 (32) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v98 (32)
    • b23: ← b21
      • v105 (32) = Copy <bool> v104
    • Plainb19 (32)
    • b24: ← b19
      • v119 (38) = Copy <*stringStruct> v816
      • v120 (38) = Copy <mem> v810
      • v121 (+38) = NilCheck <void> v816 v810
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v123 (38) = Load <unsafe.Pointer> v122 v810
      • v124 (38) = Copy <*stringStruct> v6
      • v125 (38) = NilCheck <void> v6 v810
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v127 (38) = Load <unsafe.Pointer> v126 v810
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b30 b31 (38)
    • b25: ← b19
      • v107 (33) = Copy <*bmap> v57
      • v108 (33) = Copy <mem> v810
      • v109 (+33) = NilCheck <void> v57 v810
      • v110 (33) = OffPtr <*[8]uint8> [0] v57
      • v111 (33) = Copy <uintptr> v77
      • v112 (33) = IsInBounds <bool> v77 v95
    • If v112b28 b29 (likely) (33)
    • b26: ← b28
    • Plainb17 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b25
      • v115 (33) = PtrIndex <*uint8> v110 v77
      • v116 (33) = Copy <mem> v810
      • v117 (33) = Load <uint8> v115 v810
      • v118 (33) = Eq8 <bool> v117 v36
    • If v118b27 b26 (33)
    • b29: ← b25
      • v113 (33) = Copy <mem> v810
      • v114 (33) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v114 (33)
    • b30: ← b24 b31
      • v145 (38) = Phi <bool> v128 v144
      • v798 (39) = Phi <mem> v810 v143
      • v796 (30) = Copy <uintptr> v77
      • v799 (39) = Copy <*abi.MapType> v8
      • v803 (39) = Copy <*bmap> v57
      • v812 (30) = Copy <unsafe.Pointer> v816
      • v815 (32) = Copy <*stringStruct> v6
    • If v145b33 b32 (38)
    • b31: ← b24
      • v129 (38) = Copy <*stringStruct> v816
      • v130 (38) = Copy <mem> v810
      • v131 (38) = NilCheck <void> v816 v810
      • v132 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v133 (38) = Load <unsafe.Pointer> v132 v810
      • v134 (38) = Copy <*stringStruct> v6
      • v135 (38) = NilCheck <void> v6 v810
      • v136 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v137 (38) = Load <unsafe.Pointer> v136 v810
      • v138 (38) = NilCheck <void> v6 v810
      • v139 (38) = OffPtr <*int> [8] v6
      • v140 (38) = Load <int> v139 v810
      • v141 (38) = Copy <uintptr> v140
      • v142 (38) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v133 v137 v140 v810
      • v143 (38) = SelectN <mem> [1] v142
      • v144 (38) = SelectN <bool> [0] v142
    • Plainb30 (38)
    • b32: ← b30
    • Plainb17 (38)
    • b33: ← b30
      • v146 (39) = Copy <*bmap> v57
      • v147 (39) = Copy <unsafe.Pointer> v57
      • v149 (39) = Copy <uintptr> v77
      • v150 (39) = Copy <*abi.MapType> v8
      • v151 (39) = Copy <mem> v798
      • v152 (+39) = NilCheck <void> v8 v798
      • v153 (39) = OffPtr <*uint8> [81] v8
      • v154 (39) = Load <uint8> v153 v798
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v77 v155
      • v157 (39) = Add64 <uintptr> v148 v156 (x[uintptr])
      • v158 (39) = InlMark <void> [5609] v798
      • v159 (+18) = Convert <uintptr> v57 v798
      • v160 (18) = Add64 <uintptr> v159 v157
      • v161 (18) = Convert <unsafe.Pointer> v160 v798 (~R0[unsafe.Pointer])
    • Plainb34 (+39)
    • b34: ← b33
      • v162 (39) = Copy <unsafe.Pointer> v161
      • v163 (39) = MakeResult <unsafe.Pointer,mem> v161 v798
      • v164 (39) = Copy <mem> v798
    • Ret v163 (+39)
    • b35: ← b17
      • v172 (30) = Copy <uintptr> v77
      • v174 (30) = Add64 <uintptr> v77 v173 (i[uintptr])
      • v175 (30) = Copy <unsafe.Pointer> v171
    • Plainb15 (30)
    • b36: ← b11
      • v189 (46) = Copy <unsafe.Pointer> v188
    • Plainb37 (+46)
    • b37: ← b36
      • v190 (46) = Copy <unsafe.Pointer> v188
    • Plainb38 (46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (i[uintptr], keymaybe[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (p[unsafe.Pointer], kptr[unsafe.Pointer], k[*stringStruct])
      • v192 (+46) = Less64U <bool> v191 v69
      • v769 (80) = Copy <*abi.MapType> v8
      • v773 (80) = Copy <*hmap> v9
      • v777 (73) = Copy <*stringStruct> v6
      • v781 (72) = Copy <mem> v42
      • v783 (72) = Copy <*bmap> v57
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v193 (47) = Copy <unsafe.Pointer> v794
      • v194 (47) = Copy <*stringStruct> v794
      • v195 (48) = Copy <mem> v42
      • v196 (+48) = NilCheck <void> v794 v42
      • v197 (48) = OffPtr <*int> [8] v794
      • v198 (48) = Load <int> v197 v42
      • v199 (48) = Copy <*stringStruct> v6
      • v200 (48) = NilCheck <void> v6 v42
      • v201 (48) = OffPtr <*int> [8] v6
      • v202 (48) = Load <int> v201 v42
      • v203 (48) = Neq64 <bool> v198 v202
    • If v203b42 b43 (48)
    • b40: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v421 (46) = Copy <unsafe.Pointer> v794
      • v422 (46) = Copy <mem> v42
      • v423 (+46) = InlMark <void> [5611] v42
      • v424 (+18) = Convert <uintptr> v794 v42
      • v425 (18) = Add64 <uintptr> v424 v166
      • v426 (18) = Convert <unsafe.Pointer> v425 v42 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v770 (80) = Copy <*abi.MapType> v8
      • v774 (80) = Copy <*hmap> v9
      • v779 (73) = Copy <*stringStruct> v6
      • v784 (72) = Copy <*bmap> v57
      • v786 (46) = Copy <uintptr> v191
    • Plainb65 (+46)
    • b41: ← b38 b50
      • v430 (71) = Copy <uintptr> v789
      • v431 (+71) = Neq64 <bool> v789 v69
      • v775 (74) = Copy <*abi.MapType> v8
      • v776 (73) = Copy <*stringStruct> v6
      • v780 (72) = Copy <mem> v42
      • v782 (72) = Copy <*bmap> v57
    • If v431b67 b66 (71)
    • b42: ← b39 b46
      • v218 (48) = Phi <bool> v203 v216
      • v766 (80) = Copy <*abi.MapType> v8
      • v772 (80) = Copy <*hmap> v9
      • v778 (73) = Copy <*stringStruct> v6
      • v785 (72) = Copy <*bmap> v57
      • v787 (46) = Copy <uintptr> v191
      • v788 (65) = Copy <uintptr> v789
      • v791 (49) = Copy <mem> v42
      • v792 (54) = Copy <*stringStruct> v794
      • v793 (46) = Copy <unsafe.Pointer> v794
    • If v218b48 b47 (48)
    • b43: ← b39
      • v204 (48) = Copy <*bmap> v57
      • v205 (48) = Copy <mem> v42
      • v206 (48) = NilCheck <void> v57 v42
      • v207 (48) = OffPtr <*[8]uint8> [0] v57
      • v208 (48) = Copy <uintptr> v191
      • v209 (48) = IsInBounds <bool> v191 v95
    • If v209b44 b45 (likely) (48)
    • b44: ← b43
      • v212 (48) = PtrIndex <*uint8> v207 v191
      • v213 (48) = Copy <mem> v42
      • v214 (48) = Load <uint8> v212 v42 (x[uint8])
      • v215 (48) = InlMark <void> [5612] v42
      • v216 (+113) = Leq8U <bool> v214 v103 (~R0[bool])
    • Plainb46 (+48)
    • b45: ← b43
      • v210 (48) = Copy <mem> v42
      • v211 (48) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v211 (48)
    • b46: ← b44
      • v217 (48) = Copy <bool> v216
    • Plainb42 (48)
    • b47: ← b42
      • v231 (54) = Copy <*stringStruct> v794
      • v232 (54) = Copy <mem> v42
      • v233 (+54) = NilCheck <void> v794 v42
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v794
      • v235 (54) = Load <unsafe.Pointer> v234 v42
      • v236 (54) = Copy <*stringStruct> v6
      • v237 (54) = NilCheck <void> v6 v42
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v6
      • v239 (54) = Load <unsafe.Pointer> v238 v42
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b54 b53 (54)
    • b48: ← b42
      • v219 (49) = Copy <*bmap> v57
      • v220 (49) = Copy <mem> v42
      • v221 (+49) = NilCheck <void> v57 v42
      • v222 (49) = OffPtr <*[8]uint8> [0] v57
      • v223 (49) = Copy <uintptr> v191
      • v224 (49) = IsInBounds <bool> v191 v95
    • If v224b51 b52 (likely) (49)
    • b49: ← b51
    • Plainb40 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b48
      • v227 (49) = PtrIndex <*uint8> v222 v191
      • v228 (49) = Copy <mem> v42
      • v229 (49) = Load <uint8> v227 v42
      • v230 (49) = Eq8 <bool> v229 v36
    • If v230b50 b49 (49)
    • b52: ← b48
      • v225 (49) = Copy <mem> v42
      • v226 (49) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v226 (49)
    • b53: ← b47
      • v259 (58) = Copy <*stringStruct> v6
      • v260 (58) = Copy <mem> v42
      • v261 (+58) = NilCheck <void> v6 v42
      • v262 (58) = OffPtr <*unsafe.Pointer> [0] v6
      • v263 (58) = Load <unsafe.Pointer> v262 v42
      • v264 (58) = Copy <*[4]byte> v263
      • v265 (58) = Copy <*stringStruct> v794
      • v266 (58) = NilCheck <void> v794 v42
      • v267 (58) = OffPtr <*unsafe.Pointer> [0] v794
      • v268 (58) = Load <unsafe.Pointer> v267 v42
      • v269 (58) = Copy <*[4]byte> v268
      • v270 (58) = NilCheck <void> v263 v42
      • v272 (58) = PtrIndex <*byte> v263 v20
      • v273 (58) = Load <byte> v272 v42
      • v274 (58) = Copy <uint8> v273
      • v275 (58) = ZeroExt8to32 <uint32> v273
      • v276 (58) = NilCheck <void> v263 v42
      • v278 (58) = PtrIndex <*byte> v263 v277
      • v279 (58) = Load <byte> v278 v42
      • v280 (58) = Copy <uint8> v279
      • v281 (58) = ZeroExt8to32 <uint32> v279
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v285 (58) = NilCheck <void> v263 v42
      • v287 (58) = PtrIndex <*byte> v263 v286
      • v288 (58) = Load <byte> v287 v42
      • v289 (58) = Copy <uint8> v288
      • v290 (58) = ZeroExt8to32 <uint32> v288
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v294 (58) = NilCheck <void> v263 v42
      • v296 (58) = PtrIndex <*byte> v263 v295
      • v297 (58) = Load <byte> v296 v42
      • v298 (58) = Copy <uint8> v297
      • v299 (58) = ZeroExt8to32 <uint32> v297
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v302 (58) = Or32 <uint32> v293 v301
      • v303 (58) = NilCheck <void> v268 v42
      • v304 (58) = PtrIndex <*byte> v268 v20
      • v305 (58) = Load <byte> v304 v42
      • v306 (58) = Copy <uint8> v305
      • v307 (58) = ZeroExt8to32 <uint32> v305
      • v308 (58) = NilCheck <void> v268 v42
      • v309 (58) = PtrIndex <*byte> v268 v277
      • v310 (58) = Load <byte> v309 v42
      • v311 (58) = Copy <uint8> v310
      • v312 (58) = ZeroExt8to32 <uint32> v310
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v315 (58) = NilCheck <void> v268 v42
      • v316 (58) = PtrIndex <*byte> v268 v286
      • v317 (58) = Load <byte> v316 v42
      • v318 (58) = Copy <uint8> v317
      • v319 (58) = ZeroExt8to32 <uint32> v317
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v322 (58) = NilCheck <void> v268 v42
      • v323 (58) = PtrIndex <*byte> v268 v295
      • v324 (58) = Load <byte> v323 v42
      • v325 (58) = Copy <uint8> v324
      • v326 (58) = ZeroExt8to32 <uint32> v324
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v328 (58) = Or32 <uint32> v321 v327
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b56 (58)
    • b54: ← b47
      • v241 (55) = Copy <*bmap> v57
      • v242 (55) = Copy <unsafe.Pointer> v57
      • v243 (55) = Copy <uintptr> v191
      • v244 (55) = Copy <*abi.MapType> v8
      • v245 (55) = Copy <mem> v42
      • v246 (+55) = NilCheck <void> v8 v42
      • v247 (55) = OffPtr <*uint8> [81] v8
      • v248 (55) = Load <uint8> v247 v42
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v191 v249
      • v251 (55) = Add64 <uintptr> v148 v250 (x[uintptr])
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v254 (18) = Add64 <uintptr> v253 v251
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
    • Plainb55 (+55)
    • b55: ← b54
      • v256 (55) = Copy <unsafe.Pointer> v255
      • v257 (55) = MakeResult <unsafe.Pointer,mem> v255 v42
      • v258 (55) = Copy <mem> v42
    • Ret v257 (+55)
    • b56: ← b53
      • v330 (62) = Copy <*stringStruct> v6
      • v331 (62) = Copy <mem> v42
      • v332 (+62) = NilCheck <void> v6 v42
      • v333 (62) = OffPtr <*unsafe.Pointer> [0] v6
      • v334 (62) = Load <unsafe.Pointer> v333 v42 (p[unsafe.Pointer])
      • v335 (62) = NilCheck <void> v6 v42
      • v336 (62) = OffPtr <*int> [8] v6
      • v337 (62) = Load <int> v336 v42
      • v338 (62) = Copy <uintptr> v337
      • v340 (62) = Sub64 <uintptr> v337 v339 (x[uintptr])
      • v341 (62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v334 v42
      • v343 (18) = Add64 <uintptr> v342 v340
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
    • Plainb58 (+62)
    • b57: ← b53
    • Plainb40 (+59)
    • b58: ← b56
      • v345 (62) = Copy <*stringStruct> v794
      • v346 (62) = Copy <mem> v42
      • v347 (62) = NilCheck <void> v794 v42
      • v348 (62) = OffPtr <*unsafe.Pointer> [0] v794
      • v349 (62) = Load <unsafe.Pointer> v348 v42 (p[unsafe.Pointer])
      • v350 (62) = Copy <*stringStruct> v6
      • v351 (62) = NilCheck <void> v6 v42
      • v352 (62) = OffPtr <*int> [8] v6
      • v353 (62) = Load <int> v352 v42
      • v354 (62) = Copy <uintptr> v353
      • v355 (62) = Sub64 <uintptr> v353 v339 (x[uintptr])
      • v356 (62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v349 v42
      • v358 (18) = Add64 <uintptr> v357 v355
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
    • Plainb59 (+62)
    • b59: ← b58
      • v360 (62) = Copy <unsafe.Pointer> v344
      • v361 (62) = Copy <*[4]byte> v344
      • v362 (62) = Copy <unsafe.Pointer> v359
      • v363 (62) = Copy <*[4]byte> v359
      • v364 (62) = Copy <mem> v42
      • v365 (62) = NilCheck <void> v344 v42
      • v366 (62) = PtrIndex <*byte> v344 v20
      • v367 (62) = Load <byte> v366 v42
      • v368 (62) = Copy <uint8> v367
      • v369 (62) = ZeroExt8to32 <uint32> v367
      • v370 (62) = NilCheck <void> v344 v42
      • v371 (62) = PtrIndex <*byte> v344 v277
      • v372 (62) = Load <byte> v371 v42
      • v373 (62) = Copy <uint8> v372
      • v374 (62) = ZeroExt8to32 <uint32> v372
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v377 (62) = NilCheck <void> v344 v42
      • v378 (62) = PtrIndex <*byte> v344 v286
      • v379 (62) = Load <byte> v378 v42
      • v380 (62) = Copy <uint8> v379
      • v381 (62) = ZeroExt8to32 <uint32> v379
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v376 v382
      • v384 (62) = NilCheck <void> v344 v42
      • v385 (62) = PtrIndex <*byte> v344 v295
      • v386 (62) = Load <byte> v385 v42
      • v387 (62) = Copy <uint8> v386
      • v388 (62) = ZeroExt8to32 <uint32> v386
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v390 (62) = Or32 <uint32> v383 v389
      • v391 (62) = NilCheck <void> v359 v42
      • v392 (62) = PtrIndex <*byte> v359 v20
      • v393 (62) = Load <byte> v392 v42
      • v394 (62) = Copy <uint8> v393
      • v395 (62) = ZeroExt8to32 <uint32> v393
      • v396 (62) = NilCheck <void> v359 v42
      • v397 (62) = PtrIndex <*byte> v359 v277
      • v398 (62) = Load <byte> v397 v42
      • v399 (62) = Copy <uint8> v398
      • v400 (62) = ZeroExt8to32 <uint32> v398
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v403 (62) = NilCheck <void> v359 v42
      • v404 (62) = PtrIndex <*byte> v359 v286
      • v405 (62) = Load <byte> v404 v42
      • v406 (62) = Copy <uint8> v405
      • v407 (62) = ZeroExt8to32 <uint32> v405
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v402 v408
      • v410 (62) = NilCheck <void> v359 v42
      • v411 (62) = PtrIndex <*byte> v359 v295
      • v412 (62) = Load <byte> v411 v42
      • v413 (62) = Copy <uint8> v412
      • v414 (62) = ZeroExt8to32 <uint32> v412
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v416 (62) = Or32 <uint32> v409 v415
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v418 (65) = Copy <uintptr> v789
      • v419 (+65) = Neq64 <bool> v789 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb40 (+63)
    • b62: ← b60
      • v420 (69) = Copy <uintptr> v191
    • Plainb40 (+69)
    • b63: ← b60
    • Plainb64 (+67)
    • b64: ← b63 b9
      • v484 (80) = Copy <unsafe.Pointer> v6
      • v485 (80) = Copy <mem> v42
      • v486 (+80) = InlMark <void> [5618] v42
      • v487 (+221) = Convert <uintptr> v6 v42 (x[uintptr])
      • v488 (+222) = Xor64 <uintptr> v487 v75
      • v489 (222) = Convert <unsafe.Pointer> v488 v42 (~R0[unsafe.Pointer])
      • v747 (97) = Copy <*stringStruct> v6
      • v765 (80) = Copy <*abi.MapType> v8
      • v771 (80) = Copy <*hmap> v9
    • Plainb72 (+80)
    • b65: ← b40
      • v427 (46) = Copy <uintptr> v191
      • v428 (46) = Add64 <uintptr> v191 v173 (i[uintptr])
      • v429 (46) = Copy <unsafe.Pointer> v426
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (+77) = PtrIndex <*byte> v479 v20
      • v481 (77) = Copy <unsafe.Pointer> v480
      • v482 (77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b67: ← b41
      • v432 (72) = Copy <*bmap> v57
      • v433 (72) = Copy <unsafe.Pointer> v57
      • v434 (72) = Copy <uintptr> v789
      • v436 (+72) = Mul64 <uintptr> v789 v435
      • v437 (72) = Mul64 <uintptr> v436 v69
      • v438 (72) = Add64 <uintptr> v69 v437 (x[uintptr])
      • v439 (72) = Copy <mem> v42
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v442 (18) = Add64 <uintptr> v441 v438
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
    • Plainb68 (+72)
    • b68: ← b67
      • v444 (72) = Copy <unsafe.Pointer> v443
      • v445 (72) = Copy <*stringStruct> v443
      • v446 (73) = Copy <mem> v42
      • v447 (+73) = NilCheck <void> v443 v42
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v443
      • v449 (73) = Load <unsafe.Pointer> v448 v42
      • v450 (73) = Copy <*stringStruct> v6
      • v451 (73) = NilCheck <void> v6 v42
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v6
      • v453 (73) = Load <unsafe.Pointer> v452 v42
      • v454 (73) = NilCheck <void> v6 v42
      • v455 (73) = OffPtr <*int> [8] v6
      • v456 (73) = Load <int> v455 v42
      • v457 (73) = Copy <uintptr> v456
      • v458 (73) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v456 v42
      • v459 (73) = SelectN <mem> [1] v458
      • v460 (73) = SelectN <bool> [0] v458
    • If v460b70 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b70: ← b68
      • v461 (74) = Copy <*bmap> v57
      • v462 (74) = Copy <unsafe.Pointer> v57
      • v463 (74) = Copy <uintptr> v789
      • v464 (74) = Copy <*abi.MapType> v8
      • v465 (74) = Copy <mem> v459
      • v466 (+74) = NilCheck <void> v8 v459
      • v467 (74) = OffPtr <*uint8> [81] v8
      • v468 (74) = Load <uint8> v467 v459
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v789 v469
      • v471 (74) = Add64 <uintptr> v148 v470 (x[uintptr])
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v474 (18) = Add64 <uintptr> v473 v471
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
    • Plainb71 (+74)
    • b71: ← b70
      • v476 (74) = Copy <unsafe.Pointer> v475
      • v477 (74) = MakeResult <unsafe.Pointer,mem> v475 v459
      • v478 (74) = Copy <mem> v459
    • Ret v477 (+74)
    • b72: ← b64
      • v490 (80) = Copy <*hmap> v9
      • v491 (80) = Copy <mem> v42
      • v492 (80) = NilCheck <void> v9 v42
      • v493 (80) = OffPtr <*uint32> [12] v9
      • v494 (80) = Load <uint32> v493 v42
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v496 (80) = Copy <*abi.MapType> v8
      • v497 (80) = NilCheck <void> v8 v42
      • v498 (80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v8
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v42
      • v500 (80) = Copy <unsafe.Pointer> v489
      • v501 (80) = Load <uintptr> v499 v42
      • v502 (80) = ClosureLECall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v489 v495 v42
      • v503 (80) = SelectN <mem> [1] v502
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v505 (+81) = NilCheck <void> v9 v503
      • v506 (81) = OffPtr <*uint8> [9] v9
      • v507 (81) = Load <uint8> v506 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (+187) = And8 <uint8> v507 v510
      • v512 (187) = Lsh64x8 <uintptr> [false] v173 v511 (~R0[uintptr])
    • Plainb73 (+192)
    • b73: ← b72
      • v513 (192) = Copy <uintptr> v512
      • v514 (192) = Sub64 <uintptr> v512 v173 (m[uintptr], ~R0[uintptr])
    • Plainb74 (+81)
    • b74: ← b73
      • v515 (81) = Copy <uintptr> v514
      • v516 (82) = Copy <*hmap> v9
      • v517 (82) = Copy <mem> v503
      • v518 (+82) = NilCheck <void> v9 v503
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v9
      • v520 (82) = Load <unsafe.Pointer> v519 v503 (p[unsafe.Pointer])
      • v521 (82) = Copy <uintptr> v504
      • v522 (82) = And64 <uintptr> v504 v514
      • v523 (82) = Copy <*abi.MapType> v8
      • v524 (82) = NilCheck <void> v8 v503
      • v525 (82) = OffPtr <*uint16> [82] v8
      • v526 (82) = Load <uint16> v525 v503
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v529 (82) = InlMark <void> [5620] v503
      • v530 (+18) = Convert <uintptr> v520 v503
      • v531 (18) = Add64 <uintptr> v530 v528
      • v532 (18) = Convert <unsafe.Pointer> v531 v503 (b[*bmap], ~R0[unsafe.Pointer])
    • Plainb75 (+82)
    • b75: ← b74
      • v533 (82) = Copy <unsafe.Pointer> v532
      • v534 (82) = Copy <*bmap> v532
      • v535 (83) = Copy <*hmap> v9
      • v536 (83) = Copy <mem> v503
      • v537 (+83) = NilCheck <void> v9 v503
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v9
      • v539 (83) = Load <unsafe.Pointer> v538 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v540 (83) = NeqPtr <bool> v539 v12
    • If v540b77 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v584 (93) = Copy <uintptr> v504
      • v585 (93) = Copy <mem> v503
      • v586 (+93) = InlMark <void> [5624] v503
      • v588 (+197) = Rsh64Ux64 <uintptr> [false] v504 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (+198) = Less8U <bool> v589 v579
      • v724 (101) = Copy <*abi.MapType> v8
      • v746 (97) = Copy <*stringStruct> v6
    • If v590b88 b87 (198)
    • b77: ← b75
      • v541 (84) = Copy <*hmap> v9
      • v542 (84) = Copy <mem> v503
      • v543 (+84) = InlMark <void> [5621] v503
      • v544 (+1128) = NilCheck <void> v9 v503
      • v545 (1128) = OffPtr <*uint8> [8] v9
      • v546 (1128) = Load <uint8> v545 v503
      • v548 (1128) = And8 <uint8> v546 v547
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • Plainb78 (+84)
    • b78: ← b77
      • v550 (84) = Copy <bool> v549
    • If v549b79 b80 (84)
    • b79: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v553 (m[uintptr])
      • v554 (88) = Copy <unsafe.Pointer> v539
      • v555 (88) = Copy <uintptr> v504
      • v557 (+88) = And64 <uintptr> v504 v556
      • v558 (88) = Copy <*abi.MapType> v8
      • v559 (88) = Copy <mem> v503
      • v560 (88) = NilCheck <void> v8 v503
      • v561 (88) = OffPtr <*uint16> [82] v8
      • v562 (88) = Load <uint16> v561 v503
      • v563 (88) = ZeroExt16to64 <uintptr> v562
      • v564 (88) = Mul64 <uintptr> v557 v563 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v566 (+18) = Convert <uintptr> v539 v503
      • v567 (18) = Add64 <uintptr> v566 v564
      • v568 (18) = Convert <unsafe.Pointer> v567 v503 (b[*bmap], ~R0[unsafe.Pointer], b[*bmap], oldb[*bmap])
      • v750 (97) = Copy <*stringStruct> v6
      • v759 (94) = Copy <*bmap> v532
    • Plainb81 (+88)
    • b80: ← b78
      • v551 (86) = Copy <uintptr> v514
      • v553 (+86) = Rsh64Ux64 <uintptr> [false] v514 v552 (m[uintptr])
    • Plainb79 (86)
    • b81: ← b79
      • v569 (88) = Copy <unsafe.Pointer> v568
      • v570 (88) = Copy <*bmap> v568
      • v571 (89) = Copy <mem> v503
      • v572 (+89) = InlMark <void> [5623] v503
      • v573 (+205) = NilCheck <void> v568 v503
      • v574 (205) = OffPtr <*[8]uint8> [0] v568
      • v575 (205) = PtrIndex <*uint8> v574 v20
      • v576 (205) = Load <uint8> v575 v503 (h[uint8])
      • v577 (+206) = Less8U <bool> v103 v576
    • If v577b83 b82 (206)
    • b82: ← b81 b83
      • v581 (89) = Phi <bool> v577 v580 (~R0[bool])
      • v726 (101) = Copy <*abi.MapType> v8
      • v749 (97) = Copy <*stringStruct> v6
      • v758 (94) = Copy <*bmap> v532
      • v760 (90) = Copy <*bmap> v568
      • v762 (93) = Copy <mem> v503
      • v764 (93) = Copy <uintptr> v504
    • Plainb84 (+89)
    • b83: ← b81
      • v578 (206) = Copy <uint8> v576
      • v580 (206) = Less8U <bool> v576 v579
    • Plainb82 (206)
    • b84: ← b82
      • v582 (89) = Copy <bool> v581
    • If v581b85 b86 (89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
      • v725 (101) = Copy <*abi.MapType> v8
      • v748 (97) = Copy <*stringStruct> v6
      • v761 (93) = Copy <mem> v503
      • v763 (93) = Copy <uintptr> v504
    • Plainb76
    • b86: ← b84
      • v583 (90) = Copy <*bmap> v568
    • Plainb85 (+90)
    • b87: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (top[uint8], top[uint8], ~R0[uint8])
      • v723 (101) = Copy <*abi.MapType> v8
      • v745 (97) = Copy <*stringStruct> v6
      • v754 (105) = Copy <mem> v503
      • v755 (94) = Copy <*bmap> v756
    • Plainb89 (+93)
    • b88: ← b76
      • v591 (199) = Copy <uint8> v589
      • v592 (+199) = Add8 <uint8> v589 v579 (top[uint8])
    • Plainb87 (199)
    • b89: ← b87
      • v594 (93) = Copy <uint8> v593
    • Plainb90 (+94)
    • b90: ← b89 b113
      • v595 (94) = Phi <*bmap> v756 v707 (b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer])
      • v753 (105) = Phi <mem> v503 v751
      • v597 (+94) = NeqPtr <bool> v595 v596
      • v721 (101) = Copy <*abi.MapType> v8
      • v735 (97) = Copy <uint8> v593
      • v742 (97) = Copy <*stringStruct> v6
    • If v597b91 b93 (likely) (94)
    • b91: ← b90
      • v598 (95) = Copy <*bmap> v595
      • v599 (95) = Copy <mem> v753
      • v600 (+95) = InlMark <void> [5626] v753
      • v601 (218) = Copy <unsafe.Pointer> v595
      • v602 (+218) = InlMark <void> [5633] v753
      • v603 (+18) = Convert <uintptr> v595 v753
      • v604 (18) = Add64 <uintptr> v603 v69
      • v605 (18) = Convert <unsafe.Pointer> v604 v753 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb94 (+218)
    • b92: ← b99
      • v689 (94) = Copy <*bmap> v595
      • v690 (94) = Copy <*abi.MapType> v8
      • v691 (94) = Copy <mem> v751
      • v692 (+94) = InlMark <void> [5625] v751
      • v693 (210) = Copy <unsafe.Pointer> v595
      • v694 (+210) = NilCheck <void> v8 v751
      • v695 (210) = OffPtr <*uint16> [82] v8
      • v696 (210) = Load <uint16> v695 v751
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v698 (210) = Sub64 <uintptr> v697 v69 (x[uintptr])
      • v699 (210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v595 v751
      • v701 (18) = Add64 <uintptr> v700 v698
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
    • Plainb112 (+210)
    • b93: ← b90
      • v710 (+105) = PtrIndex <*byte> v709 v20
      • v711 (105) = Copy <unsafe.Pointer> v710
      • v712 (105) = MakeResult <unsafe.Pointer,mem> v710 v753
      • v713 (105) = Copy <mem> v753
    • Ret v712 (+105)
    • b94: ← b91
      • v606 (95) = Copy <unsafe.Pointer> v605
    • Plainb95 (+95)
    • b95: ← b94
      • v607 (95) = Copy <unsafe.Pointer> v605
    • Plainb96 (95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v753 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v609 (+95) = Less64U <bool> v608 v69
      • v720 (101) = Copy <*abi.MapType> v8
      • v729 (101) = Copy <*bmap> v595
      • v734 (97) = Copy <uint8> v593
      • v741 (97) = Copy <*stringStruct> v6
    • If v609b97 b99 (likely) (95)
    • b97: ← b96
      • v610 (96) = Copy <unsafe.Pointer> v752
      • v611 (96) = Copy <*stringStruct> v752
      • v612 (97) = Copy <mem> v751
      • v613 (+97) = NilCheck <void> v752 v751
      • v614 (97) = OffPtr <*int> [8] v752
      • v615 (97) = Load <int> v614 v751
      • v616 (97) = Copy <*stringStruct> v6
      • v617 (97) = NilCheck <void> v6 v751
      • v618 (97) = OffPtr <*int> [8] v6
      • v619 (97) = Load <int> v618 v751
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b100 b101 (97)
    • b98: ← b105 b108
      • v681 (95) = Phi <mem> v751 v717
      • v680 (95) = Copy <unsafe.Pointer> v752
      • v682 (+95) = InlMark <void> [5627] v681
      • v683 (+18) = Convert <uintptr> v752 v681
      • v684 (18) = Add64 <uintptr> v683 v166
      • v685 (18) = Convert <unsafe.Pointer> v684 v681 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v714 (95) = Copy <uintptr> v608
      • v722 (101) = Copy <*abi.MapType> v8
      • v730 (101) = Copy <*bmap> v595
      • v736 (97) = Copy <uint8> v593
      • v743 (97) = Copy <*stringStruct> v6
    • Plainb111 (+95)
    • b99: ← b96
    • Plainb92 (95)
    • b100: ← b97 b102
      • v634 (97) = Phi <bool> v620 v633
      • v715 (95) = Copy <uintptr> v608
      • v719 (101) = Copy <*abi.MapType> v8
      • v728 (101) = Copy <*bmap> v595
      • v731 (100) = Copy <*stringStruct> v6
      • v732 (100) = Copy <mem> v751
      • v733 (100) = Copy <*stringStruct> v752
      • v737 (97) = Copy <uint8> v593
      • v739 (95) = Copy <unsafe.Pointer> v752
    • If v634b105 b104 (97)
    • b101: ← b97
      • v621 (97) = Copy <*bmap> v595
      • v622 (97) = Copy <mem> v751
      • v623 (97) = NilCheck <void> v595 v751
      • v624 (97) = OffPtr <*[8]uint8> [0] v595
      • v625 (97) = Copy <uintptr> v608
      • v626 (97) = IsInBounds <bool> v608 v95
    • If v626b102 b103 (likely) (97)
    • b102: ← b101
      • v629 (97) = PtrIndex <*uint8> v624 v608
      • v630 (97) = Copy <mem> v751
      • v631 (97) = Load <uint8> v629 v751
      • v632 (97) = Copy <uint8> v593
      • v633 (97) = Neq8 <bool> v631 v593
    • Plainb100 (97)
    • b103: ← b101
      • v627 (97) = Copy <mem> v751
      • v628 (97) = PanicBounds <mem> [1] v608 v95 v751
    • Exit v628 (97)
    • b104: ← b100
      • v635 (100) = Copy <*stringStruct> v752
      • v636 (100) = Copy <mem> v751
      • v637 (+100) = NilCheck <void> v752 v751
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v639 (100) = Load <unsafe.Pointer> v638 v751
      • v640 (100) = Copy <*stringStruct> v6
      • v641 (100) = NilCheck <void> v6 v751
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v643 (100) = Load <unsafe.Pointer> v642 v751
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b106 b107 (100)
    • b105: ← b100
    • Plainb98 (+98)
    • b106: ← b104 b107
      • v661 (100) = Phi <bool> v644 v660
      • v717 (101) = Phi <mem> v751 v659
      • v716 (95) = Copy <uintptr> v608
      • v718 (101) = Copy <*abi.MapType> v8
      • v727 (101) = Copy <*bmap> v595
      • v738 (97) = Copy <uint8> v593
      • v740 (95) = Copy <unsafe.Pointer> v752
      • v744 (97) = Copy <*stringStruct> v6
    • If v661b109 b108 (100)
    • b107: ← b104
      • v645 (100) = Copy <*stringStruct> v752
      • v646 (100) = Copy <mem> v751
      • v647 (100) = NilCheck <void> v752 v751
      • v648 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v649 (100) = Load <unsafe.Pointer> v648 v751
      • v650 (100) = Copy <*stringStruct> v6
      • v651 (100) = NilCheck <void> v6 v751
      • v652 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v653 (100) = Load <unsafe.Pointer> v652 v751
      • v654 (100) = NilCheck <void> v6 v751
      • v655 (100) = OffPtr <*int> [8] v6
      • v656 (100) = Load <int> v655 v751
      • v657 (100) = Copy <uintptr> v656
      • v658 (100) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v649 v653 v656 v751
      • v659 (100) = SelectN <mem> [1] v658
      • v660 (100) = SelectN <bool> [0] v658
    • Plainb106 (100)
    • b108: ← b106
    • Plainb98 (100)
    • b109: ← b106
      • v662 (101) = Copy <*bmap> v595
      • v663 (101) = Copy <unsafe.Pointer> v595
      • v664 (101) = Copy <uintptr> v608
      • v665 (101) = Copy <*abi.MapType> v8
      • v666 (101) = Copy <mem> v717
      • v667 (+101) = NilCheck <void> v8 v717
      • v668 (101) = OffPtr <*uint8> [81] v8
      • v669 (101) = Load <uint8> v668 v717
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v608 v670
      • v672 (101) = Add64 <uintptr> v148 v671 (x[uintptr])
      • v673 (101) = InlMark <void> [5628] v717
      • v674 (+18) = Convert <uintptr> v595 v717
      • v675 (18) = Add64 <uintptr> v674 v672
      • v676 (18) = Convert <unsafe.Pointer> v675 v717 (~R0[unsafe.Pointer])
    • Plainb110 (+101)
    • b110: ← b109
      • v677 (101) = Copy <unsafe.Pointer> v676
      • v678 (101) = MakeResult <unsafe.Pointer,mem> v676 v717
      • v679 (101) = Copy <mem> v717
    • Ret v678 (+101)
    • b111: ← b98
      • v686 (95) = Copy <uintptr> v608
      • v687 (95) = Add64 <uintptr> v608 v173 (i[uintptr])
      • v688 (95) = Copy <unsafe.Pointer> v685
    • Plainb96 (95)
    • b112: ← b92
      • v703 (210) = Copy <unsafe.Pointer> v702
      • v704 (210) = Copy <**bmap> v702
      • v705 (210) = Copy <mem> v751
      • v706 (210) = NilCheck <void> v702 v751
      • v707 (210) = Load <*bmap> v702 v751 (~R0[*bmap], b[*bmap])
    • Plainb113 (+94)
    • b113: ← b112
      • v708 (94) = Copy <*bmap> v707
    • Plainb90 (94)
  • name t[*abi.MapType]: v8 v8 v8 v8 v8 v8 v8 v8 v8 v8 v8 v8 v8 v8 v8 v8 v8 v8 v8 v8 v8 v8 v8 v8 v8 v8 v8 v8 v8
  • name h[*hmap]: v9 v9 v9 v9 v9 v9 v9 v9 v9 v9 v9 v9 v9 v9 v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6 v6
  • name key[*stringStruct]: v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6 v6
  • name b[*bmap]: v57 v57 v57 v57 v57 v57 v57 v57 v57 v57 v57 v57 v57 v57 v57 v57 v57 v57 v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73 v73
  • name ~R0[unsafe.Pointer]: v73 v73
  • name i[uintptr]: v75 v77 v77 v77 v77 v77 v174 v77 v77 v77
  • name kptr[unsafe.Pointer]: v73 v816 v816 v171 v816 v816 v816
  • name k[*stringStruct]: v816 v816 v816 v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104 v104
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v157
  • name ~R0[unsafe.Pointer]: v161 v161
  • name p[unsafe.Pointer]: v816
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v171 v171
  • name keymaybe[uintptr]: v69 v789 v191 v789 v789 v789 v789 v789 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188 v188
  • name ~R0[unsafe.Pointer]: v188 v188
  • name i[uintptr]: v75 v191 v191 v191 v191 v191 v191 v428 v191 v191
  • name kptr[unsafe.Pointer]: v188 v794 v794 v426 v794 v794
  • name k[*stringStruct]: v794 v794 v794 v794 v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216 v216
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v251
  • name ~R0[unsafe.Pointer]: v255 v255
  • name p[unsafe.Pointer]: v334
  • name x[uintptr]: v340
  • name ~R0[unsafe.Pointer]: v344 v344
  • name p[unsafe.Pointer]: v349
  • name x[uintptr]: v355
  • name ~R0[unsafe.Pointer]: v359 v359
  • name p[unsafe.Pointer]: v794
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v426 v426
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v438
  • name ~R0[unsafe.Pointer]: v443 v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v471
  • name ~R0[unsafe.Pointer]: v475 v475
  • name p[unsafe.Pointer]: v6
  • name x[uintptr]: v487
  • name ~R0[unsafe.Pointer]: v489 v489
  • name hash[uintptr]: v504 v504 v504 v504 v504 v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512 v512
  • name ~R0[uintptr]: v514 v514
  • name m[uintptr]: v514 v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532 v532
  • name b[*bmap]: v532 v568 v595 v595 v595 v595 v595 v707 v595 v595 v595 v595 v756 v756 v757 v532 v532
  • name c[unsafe.Pointer]: v539 v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549 v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568 v568
  • name oldb[*bmap]: v568 v568 v568
  • name b[*bmap]: v568
  • name h[uint8]: v576 v576
  • name ~R0[bool]: v581 v581
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v589 v592 v593
  • name ~R0[uint8]: v593 v593
  • name top[uint8]: v593 v593 v593 v593 v593 v593 v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605 v605
  • name ~R0[unsafe.Pointer]: v605 v605
  • name i[uintptr]: v75 v608 v608 v608 v608 v687 v608 v608 v608
  • name kptr[unsafe.Pointer]: v605 v752 v752 v685 v752 v752 v752
  • name k[*stringStruct]: v752 v752 v752 v752
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v672
  • name ~R0[unsafe.Pointer]: v676 v676
  • name p[unsafe.Pointer]: v752
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v685 v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v698
  • name ~R0[unsafe.Pointer]: v702 v702
  • name ~R0[*bmap]: v707 v707
  • early deadcode [116042 ns]

    b1 b1 If b2 b2 If b1->b2 0 b3 b3 Plain b1->b3 1 b5 b5 Ret b2->b5 0 b4 b4 If b2->b4 1 b3->b2 0 b7 b7 Plain b4->b7 0 b6 b6 Plain b4->b6 1 b8 b8 If b6->b8 0 b7->b6 0 b10 b10 If b8->b10 0 b9 b9 Plain b8->b9 1 b64 b64 Plain b9->b64 0 b12 b12 Plain b10->b12 0 b11 b11 Plain b10->b11 1 b36 b36 Plain b11->b36 0 b13 b13 Plain b12->b13 0 b14 b14 Plain b13->b14 0 b15 b15 If b14->b15 0 b16 b16 If b15->b16 0 b18 b18 Ret b15->b18 1 b19 b19 If b16->b19 0 b20 b20 If b16->b20 1 b17 b17 Plain b35 b35 Plain b17->b35 0 b25 b25 If b19->b25 0 b24 b24 If b19->b24 1 b21 b21 Plain b20->b21 0 b22 b22 Exit b20->b22 1 b23 b23 Plain b21->b23 0 b23->b19 0 b30 b30 If b24->b30 0 b31 b31 Plain b24->b31 1 b28 b28 If b25->b28 0 b29 b29 Exit b25->b29 1 b26 b26 Plain b26->b17 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b33 b33 Plain b30->b33 0 b32 b32 Plain b30->b32 1 b31->b30 0 b32->b17 0 b34 b34 Ret b33->b34 0 b35->b15 0 b37 b37 Plain b36->b37 0 b38 b38 If b37->b38 0 b39 b39 If b38->b39 0 b41 b41 If b38->b41 1 b42 b42 If b39->b42 0 b43 b43 If b39->b43 1 b40 b40 Plain b65 b65 Plain b40->b65 0 b67 b67 Plain b41->b67 0 b66 b66 Ret b41->b66 1 b48 b48 If b42->b48 0 b47 b47 If b42->b47 1 b44 b44 Plain b43->b44 0 b45 b45 Exit b43->b45 1 b46 b46 Plain b44->b46 0 b46->b42 0 b54 b54 Plain b47->b54 0 b53 b53 If b47->b53 1 b51 b51 If b48->b51 0 b52 b52 Exit b48->b52 1 b49 b49 Plain b49->b40 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b56 b56 Plain b53->b56 1 b55 b55 Ret b54->b55 0 b58 b58 Plain b56->b58 0 b57->b40 0 b59 b59 If b58->b59 0 b61 b61 Plain b59->b61 0 b60 b60 If b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b40 0 b62->b40 0 b63->b64 0 b72 b72 Plain b64->b72 0 b65->b38 0 b68 b68 If b67->b68 0 b70 b70 Plain b68->b70 0 b69 b69 Plain b68->b69 1 b69->b66 0 b71 b71 Ret b70->b71 0 b73 b73 Plain b72->b73 0 b74 b74 Plain b73->b74 0 b75 b75 If b74->b75 0 b77 b77 Plain b75->b77 0 b76 b76 If b75->b76 1 b88 b88 Plain b76->b88 0 b87 b87 Plain b76->b87 1 b78 b78 If b77->b78 0 b79 b79 Plain b78->b79 0 b80 b80 Plain b78->b80 1 b81 b81 If b79->b81 0 b80->b79 0 b83 b83 Plain b81->b83 0 b82 b82 Plain b81->b82 1 b84 b84 If b82->b84 0 b83->b82 0 b85 b85 Plain b84->b85 0 b86 b86 Plain b84->b86 1 b85->b76 0 b86->b85 0 b89 b89 Plain b87->b89 0 b88->b87 0 b90 b90 If b89->b90 0 b91 b91 Plain b90->b91 0 b93 b93 Ret b90->b93 1 b94 b94 Plain b91->b94 0 b92 b92 Plain b112 b112 Plain b92->b112 0 b95 b95 Plain b94->b95 0 b96 b96 If b95->b96 0 b97 b97 If b96->b97 0 b99 b99 Plain b96->b99 1 b100 b100 If b97->b100 0 b101 b101 If b97->b101 1 b98 b98 Plain b111 b111 Plain b98->b111 0 b99->b92 0 b105 b105 Plain b100->b105 0 b104 b104 If b100->b104 1 b102 b102 Plain b101->b102 0 b103 b103 Exit b101->b103 1 b102->b100 0 b106 b106 If b104->b106 0 b107 b107 Plain b104->b107 1 b105->b98 0 b109 b109 Plain b106->b109 0 b108 b108 Plain b106->b108 1 b107->b106 0 b108->b98 0 b110 b110 Ret b109->b110 0 b111->b96 0 b113 b113 Plain b112->b113 0 b113->b90 0
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (~R0[*stringStruct], p[unsafe.Pointer], sp[*string], key[*stringStruct])
      • v8 (13) = Arg <*abi.MapType> {t} (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = Arg <*hmap> {h} (h[*hmap], h[*hmap])
      • v10 (13) = Arg <string> {ky}
      • v11 (+13) = Store <mem> {string} v6 v10 v1
      • v12 (?) = ConstNil <unsafe.Pointer>
      • v13 (?) = ConstNil <*hmap>
      • v14 (+18) = EqPtr <bool> v9 v13
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v38 (?) = ConstString <string> {"concurrent map read and map write"}
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (x[uintptr], keymaybe[uintptr], x[uintptr], x[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v95 (?) = Const64 <int> [8]
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v166 (?) = Const64 <uintptr> [16] (x[uintptr], x[uintptr], x[uintptr])
      • v173 (?) = Const64 <uintptr> [1]
      • v176 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v277 (?) = Const64 <int> [1]
      • v282 (?) = Const64 <uint> [8]
      • v286 (?) = Const64 <int> [2]
      • v291 (?) = Const64 <uint> [16]
      • v295 (?) = Const64 <int> [3]
      • v300 (?) = Const64 <uint> [24]
      • v339 (?) = Const64 <uintptr> [4]
      • v435 (?) = Const64 <uintptr> [2]
      • v479 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v596 (?) = ConstNil <*bmap>
      • v709 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
    • If v14b2 b3 (18)
    • b2: ← b1 b3
      • v22 (18) = Phi <bool> v14 v21
    • If v22b5 b4 (18)
    • b3: ← b1
      • v17 (18) = NilCheck <void> v9 v11
      • v18 (18) = OffPtr <*int> [0] v9
      • v19 (18) = Load <int> v18 v11
      • v21 (18) = Eq64 <bool> v19 v20
    • Plainb2 (18)
    • b4: ← b2
      • v31 (+21) = NilCheck <void> v9 v11
      • v32 (21) = OffPtr <*uint8> [8] v9
      • v33 (21) = Load <uint8> v32 v11
      • v35 (21) = And8 <uint8> v33 v34
      • v37 (21) = Neq8 <bool> v35 v36
    • If v37b7 b6 (21)
    • b5: ← b2
      • v25 (+19) = PtrIndex <*byte> v23 v20
      • v27 (19) = MakeResult <unsafe.Pointer,mem> v25 v11
    • Ret v27 (+19)
    • b6: ← b4 b7
      • v42 (24) = Phi <mem> v11 v41
      • v43 (+24) = InlMark <void> [5605] v42
    • Plainb8 (+24)
    • b7: ← b4
      • v40 (+22) = StaticLECall <mem> {AuxCall{runtime.fatal}} [16] v38 v11
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb6 (22)
    • b8: ← b6
      • v49 (+25) = NilCheck <void> v9 v42
      • v50 (25) = OffPtr <*uint8> [9] v9
      • v51 (25) = Load <uint8> v50 v42
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb64 (25)
    • b10: ← b8
      • v55 (+27) = NilCheck <void> v9 v42
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v9
      • v57 (27) = Load <unsafe.Pointer> v56 v42 (p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap])
      • v60 (+28) = NilCheck <void> v6 v42
      • v61 (28) = OffPtr <*int> [8] v6
      • v62 (28) = Load <int> v61 v42
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b12 b11 (28)
    • b11: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v186 (+18) = Convert <uintptr> v57 v42
      • v187 (18) = Add64 <uintptr> v186 v69
      • v188 (18) = Convert <unsafe.Pointer> v187 v42 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb36 (+218)
    • b12: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v71 (+18) = Convert <uintptr> v57 v42
      • v72 (18) = Add64 <uintptr> v71 v69
      • v73 (18) = Convert <unsafe.Pointer> v72 v42 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb13 (+218)
    • b13: ← b12
    • Plainb14 (+30)
    • b14: ← b13
    • Plainb15 (30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v78 (+30) = Less64U <bool> v77 v69
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v82 (+32) = NilCheck <void> v816 v810
      • v83 (32) = OffPtr <*int> [8] v816
      • v84 (32) = Load <int> v83 v810
      • v86 (32) = NilCheck <void> v6 v810
      • v87 (32) = OffPtr <*int> [8] v6
      • v88 (32) = Load <int> v87 v810
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b19 b20 (32)
    • b17: ← b26 b32
      • v167 (30) = Phi <mem> v810 v798
      • v168 (+30) = InlMark <void> [5607] v167
      • v169 (+18) = Convert <uintptr> v816 v167
      • v170 (18) = Add64 <uintptr> v169 v166
      • v171 (18) = Convert <unsafe.Pointer> v170 v167 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb35 (+30)
    • b18: ← b15 b27
      • v177 (+42) = PtrIndex <*byte> v176 v20
      • v179 (42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b16 b23
      • v106 (32) = Phi <bool> v89 v104
    • If v106b25 b24 (32)
    • b20: ← b16
      • v92 (32) = NilCheck <void> v57 v810
      • v93 (32) = OffPtr <*[8]uint8> [0] v57
      • v96 (32) = IsInBounds <bool> v77 v95
    • If v96b21 b22 (likely) (32)
    • b21: ← b20
      • v99 (32) = PtrIndex <*uint8> v93 v77
      • v101 (32) = Load <uint8> v99 v810 (x[uint8])
      • v102 (32) = InlMark <void> [5608] v810
      • v104 (+113) = Leq8U <bool> v101 v103 (~R0[bool])
    • Plainb23 (+32)
    • b22: ← b20
      • v98 (32) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v98 (32)
    • b23: ← b21
    • Plainb19 (32)
    • b24: ← b19
      • v121 (+38) = NilCheck <void> v816 v810
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v123 (38) = Load <unsafe.Pointer> v122 v810
      • v125 (38) = NilCheck <void> v6 v810
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v127 (38) = Load <unsafe.Pointer> v126 v810
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b30 b31 (38)
    • b25: ← b19
      • v109 (+33) = NilCheck <void> v57 v810
      • v110 (33) = OffPtr <*[8]uint8> [0] v57
      • v112 (33) = IsInBounds <bool> v77 v95
    • If v112b28 b29 (likely) (33)
    • b26: ← b28
    • Plainb17 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b25
      • v115 (33) = PtrIndex <*uint8> v110 v77
      • v117 (33) = Load <uint8> v115 v810
      • v118 (33) = Eq8 <bool> v117 v36
    • If v118b27 b26 (33)
    • b29: ← b25
      • v114 (33) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v114 (33)
    • b30: ← b24 b31
      • v145 (38) = Phi <bool> v128 v144
      • v798 (39) = Phi <mem> v810 v143
    • If v145b33 b32 (38)
    • b31: ← b24
      • v131 (38) = NilCheck <void> v816 v810
      • v132 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v133 (38) = Load <unsafe.Pointer> v132 v810
      • v135 (38) = NilCheck <void> v6 v810
      • v136 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v137 (38) = Load <unsafe.Pointer> v136 v810
      • v138 (38) = NilCheck <void> v6 v810
      • v139 (38) = OffPtr <*int> [8] v6
      • v140 (38) = Load <int> v139 v810
      • v142 (38) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v133 v137 v140 v810
      • v143 (38) = SelectN <mem> [1] v142
      • v144 (38) = SelectN <bool> [0] v142
    • Plainb30 (38)
    • b32: ← b30
    • Plainb17 (38)
    • b33: ← b30
      • v152 (+39) = NilCheck <void> v8 v798
      • v153 (39) = OffPtr <*uint8> [81] v8
      • v154 (39) = Load <uint8> v153 v798
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v77 v155
      • v157 (39) = Add64 <uintptr> v148 v156 (x[uintptr])
      • v158 (39) = InlMark <void> [5609] v798
      • v159 (+18) = Convert <uintptr> v57 v798
      • v160 (18) = Add64 <uintptr> v159 v157
      • v161 (18) = Convert <unsafe.Pointer> v160 v798 (~R0[unsafe.Pointer])
    • Plainb34 (+39)
    • b34: ← b33
      • v163 (39) = MakeResult <unsafe.Pointer,mem> v161 v798
    • Ret v163 (+39)
    • b35: ← b17
      • v174 (30) = Add64 <uintptr> v77 v173 (i[uintptr])
    • Plainb15 (30)
    • b36: ← b11
    • Plainb37 (+46)
    • b37: ← b36
    • Plainb38 (46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (keymaybe[uintptr], i[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v192 (+46) = Less64U <bool> v191 v69
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v196 (+48) = NilCheck <void> v794 v42
      • v197 (48) = OffPtr <*int> [8] v794
      • v198 (48) = Load <int> v197 v42
      • v200 (48) = NilCheck <void> v6 v42
      • v201 (48) = OffPtr <*int> [8] v6
      • v202 (48) = Load <int> v201 v42
      • v203 (48) = Neq64 <bool> v198 v202
    • If v203b42 b43 (48)
    • b40: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v424 (+18) = Convert <uintptr> v794 v42
      • v425 (18) = Add64 <uintptr> v424 v166
      • v426 (18) = Convert <unsafe.Pointer> v425 v42 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb65 (+46)
    • b41: ← b38 b50
      • v431 (+71) = Neq64 <bool> v789 v69
    • If v431b67 b66 (71)
    • b42: ← b39 b46
      • v218 (48) = Phi <bool> v203 v216
    • If v218b48 b47 (48)
    • b43: ← b39
      • v206 (48) = NilCheck <void> v57 v42
      • v207 (48) = OffPtr <*[8]uint8> [0] v57
      • v209 (48) = IsInBounds <bool> v191 v95
    • If v209b44 b45 (likely) (48)
    • b44: ← b43
      • v212 (48) = PtrIndex <*uint8> v207 v191
      • v214 (48) = Load <uint8> v212 v42 (x[uint8])
      • v215 (48) = InlMark <void> [5612] v42
      • v216 (+113) = Leq8U <bool> v214 v103 (~R0[bool])
    • Plainb46 (+48)
    • b45: ← b43
      • v211 (48) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v211 (48)
    • b46: ← b44
    • Plainb42 (48)
    • b47: ← b42
      • v233 (+54) = NilCheck <void> v794 v42
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v794
      • v235 (54) = Load <unsafe.Pointer> v234 v42
      • v237 (54) = NilCheck <void> v6 v42
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v6
      • v239 (54) = Load <unsafe.Pointer> v238 v42
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b54 b53 (54)
    • b48: ← b42
      • v221 (+49) = NilCheck <void> v57 v42
      • v222 (49) = OffPtr <*[8]uint8> [0] v57
      • v224 (49) = IsInBounds <bool> v191 v95
    • If v224b51 b52 (likely) (49)
    • b49: ← b51
    • Plainb40 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b48
      • v227 (49) = PtrIndex <*uint8> v222 v191
      • v229 (49) = Load <uint8> v227 v42
      • v230 (49) = Eq8 <bool> v229 v36
    • If v230b50 b49 (49)
    • b52: ← b48
      • v226 (49) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v226 (49)
    • b53: ← b47
      • v261 (+58) = NilCheck <void> v6 v42
      • v262 (58) = OffPtr <*unsafe.Pointer> [0] v6
      • v263 (58) = Load <unsafe.Pointer> v262 v42
      • v266 (58) = NilCheck <void> v794 v42
      • v267 (58) = OffPtr <*unsafe.Pointer> [0] v794
      • v268 (58) = Load <unsafe.Pointer> v267 v42
      • v270 (58) = NilCheck <void> v263 v42
      • v272 (58) = PtrIndex <*byte> v263 v20
      • v273 (58) = Load <byte> v272 v42
      • v275 (58) = ZeroExt8to32 <uint32> v273
      • v276 (58) = NilCheck <void> v263 v42
      • v278 (58) = PtrIndex <*byte> v263 v277
      • v279 (58) = Load <byte> v278 v42
      • v281 (58) = ZeroExt8to32 <uint32> v279
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v285 (58) = NilCheck <void> v263 v42
      • v287 (58) = PtrIndex <*byte> v263 v286
      • v288 (58) = Load <byte> v287 v42
      • v290 (58) = ZeroExt8to32 <uint32> v288
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v294 (58) = NilCheck <void> v263 v42
      • v296 (58) = PtrIndex <*byte> v263 v295
      • v297 (58) = Load <byte> v296 v42
      • v299 (58) = ZeroExt8to32 <uint32> v297
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v302 (58) = Or32 <uint32> v293 v301
      • v303 (58) = NilCheck <void> v268 v42
      • v304 (58) = PtrIndex <*byte> v268 v20
      • v305 (58) = Load <byte> v304 v42
      • v307 (58) = ZeroExt8to32 <uint32> v305
      • v308 (58) = NilCheck <void> v268 v42
      • v309 (58) = PtrIndex <*byte> v268 v277
      • v310 (58) = Load <byte> v309 v42
      • v312 (58) = ZeroExt8to32 <uint32> v310
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v315 (58) = NilCheck <void> v268 v42
      • v316 (58) = PtrIndex <*byte> v268 v286
      • v317 (58) = Load <byte> v316 v42
      • v319 (58) = ZeroExt8to32 <uint32> v317
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v322 (58) = NilCheck <void> v268 v42
      • v323 (58) = PtrIndex <*byte> v268 v295
      • v324 (58) = Load <byte> v323 v42
      • v326 (58) = ZeroExt8to32 <uint32> v324
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v328 (58) = Or32 <uint32> v321 v327
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b56 (58)
    • b54: ← b47
      • v246 (+55) = NilCheck <void> v8 v42
      • v247 (55) = OffPtr <*uint8> [81] v8
      • v248 (55) = Load <uint8> v247 v42
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v191 v249
      • v251 (55) = Add64 <uintptr> v148 v250 (x[uintptr])
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v254 (18) = Add64 <uintptr> v253 v251
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
    • Plainb55 (+55)
    • b55: ← b54
      • v257 (55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b56: ← b53
      • v332 (+62) = NilCheck <void> v6 v42
      • v333 (62) = OffPtr <*unsafe.Pointer> [0] v6
      • v334 (62) = Load <unsafe.Pointer> v333 v42 (p[unsafe.Pointer])
      • v335 (62) = NilCheck <void> v6 v42
      • v336 (62) = OffPtr <*int> [8] v6
      • v337 (62) = Load <int> v336 v42
      • v340 (62) = Sub64 <uintptr> v337 v339 (x[uintptr])
      • v341 (62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v334 v42
      • v343 (18) = Add64 <uintptr> v342 v340
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
    • Plainb58 (+62)
    • b57: ← b53
    • Plainb40 (+59)
    • b58: ← b56
      • v347 (62) = NilCheck <void> v794 v42
      • v348 (62) = OffPtr <*unsafe.Pointer> [0] v794
      • v349 (62) = Load <unsafe.Pointer> v348 v42 (p[unsafe.Pointer])
      • v351 (62) = NilCheck <void> v6 v42
      • v352 (62) = OffPtr <*int> [8] v6
      • v353 (62) = Load <int> v352 v42
      • v355 (62) = Sub64 <uintptr> v353 v339 (x[uintptr])
      • v356 (62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v349 v42
      • v358 (18) = Add64 <uintptr> v357 v355
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
    • Plainb59 (+62)
    • b59: ← b58
      • v365 (62) = NilCheck <void> v344 v42
      • v366 (62) = PtrIndex <*byte> v344 v20
      • v367 (62) = Load <byte> v366 v42
      • v369 (62) = ZeroExt8to32 <uint32> v367
      • v370 (62) = NilCheck <void> v344 v42
      • v371 (62) = PtrIndex <*byte> v344 v277
      • v372 (62) = Load <byte> v371 v42
      • v374 (62) = ZeroExt8to32 <uint32> v372
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v377 (62) = NilCheck <void> v344 v42
      • v378 (62) = PtrIndex <*byte> v344 v286
      • v379 (62) = Load <byte> v378 v42
      • v381 (62) = ZeroExt8to32 <uint32> v379
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v376 v382
      • v384 (62) = NilCheck <void> v344 v42
      • v385 (62) = PtrIndex <*byte> v344 v295
      • v386 (62) = Load <byte> v385 v42
      • v388 (62) = ZeroExt8to32 <uint32> v386
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v390 (62) = Or32 <uint32> v383 v389
      • v391 (62) = NilCheck <void> v359 v42
      • v392 (62) = PtrIndex <*byte> v359 v20
      • v393 (62) = Load <byte> v392 v42
      • v395 (62) = ZeroExt8to32 <uint32> v393
      • v396 (62) = NilCheck <void> v359 v42
      • v397 (62) = PtrIndex <*byte> v359 v277
      • v398 (62) = Load <byte> v397 v42
      • v400 (62) = ZeroExt8to32 <uint32> v398
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v403 (62) = NilCheck <void> v359 v42
      • v404 (62) = PtrIndex <*byte> v359 v286
      • v405 (62) = Load <byte> v404 v42
      • v407 (62) = ZeroExt8to32 <uint32> v405
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v402 v408
      • v410 (62) = NilCheck <void> v359 v42
      • v411 (62) = PtrIndex <*byte> v359 v295
      • v412 (62) = Load <byte> v411 v42
      • v414 (62) = ZeroExt8to32 <uint32> v412
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v416 (62) = Or32 <uint32> v409 v415
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v419 (+65) = Neq64 <bool> v789 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb40 (+63)
    • b62: ← b60
    • Plainb40 (+69)
    • b63: ← b60
    • Plainb64 (+67)
    • b64: ← b63 b9
      • v486 (+80) = InlMark <void> [5618] v42
      • v487 (+221) = Convert <uintptr> v6 v42 (x[uintptr])
      • v488 (+222) = Xor64 <uintptr> v487 v75
      • v489 (222) = Convert <unsafe.Pointer> v488 v42 (~R0[unsafe.Pointer])
    • Plainb72 (+80)
    • b65: ← b40
      • v428 (46) = Add64 <uintptr> v191 v173 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (+77) = PtrIndex <*byte> v479 v20
      • v482 (77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b67: ← b41
      • v436 (+72) = Mul64 <uintptr> v789 v435
      • v437 (72) = Mul64 <uintptr> v436 v69
      • v438 (72) = Add64 <uintptr> v69 v437 (x[uintptr])
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v442 (18) = Add64 <uintptr> v441 v438
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
    • Plainb68 (+72)
    • b68: ← b67
      • v447 (+73) = NilCheck <void> v443 v42
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v443
      • v449 (73) = Load <unsafe.Pointer> v448 v42
      • v451 (73) = NilCheck <void> v6 v42
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v6
      • v453 (73) = Load <unsafe.Pointer> v452 v42
      • v454 (73) = NilCheck <void> v6 v42
      • v455 (73) = OffPtr <*int> [8] v6
      • v456 (73) = Load <int> v455 v42
      • v458 (73) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v456 v42
      • v459 (73) = SelectN <mem> [1] v458
      • v460 (73) = SelectN <bool> [0] v458
    • If v460b70 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b70: ← b68
      • v466 (+74) = NilCheck <void> v8 v459
      • v467 (74) = OffPtr <*uint8> [81] v8
      • v468 (74) = Load <uint8> v467 v459
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v789 v469
      • v471 (74) = Add64 <uintptr> v148 v470 (x[uintptr])
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v474 (18) = Add64 <uintptr> v473 v471
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
    • Plainb71 (+74)
    • b71: ← b70
      • v477 (74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b72: ← b64
      • v492 (80) = NilCheck <void> v9 v42
      • v493 (80) = OffPtr <*uint32> [12] v9
      • v494 (80) = Load <uint32> v493 v42
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v497 (80) = NilCheck <void> v8 v42
      • v498 (80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v8
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v42
      • v501 (80) = Load <uintptr> v499 v42
      • v502 (80) = ClosureLECall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v489 v495 v42
      • v503 (80) = SelectN <mem> [1] v502
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v505 (+81) = NilCheck <void> v9 v503
      • v506 (81) = OffPtr <*uint8> [9] v9
      • v507 (81) = Load <uint8> v506 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (+187) = And8 <uint8> v507 v510
      • v512 (187) = Lsh64x8 <uintptr> [false] v173 v511 (~R0[uintptr])
    • Plainb73 (+192)
    • b73: ← b72
      • v514 (192) = Sub64 <uintptr> v512 v173 (m[uintptr], ~R0[uintptr])
    • Plainb74 (+81)
    • b74: ← b73
      • v518 (+82) = NilCheck <void> v9 v503
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v9
      • v520 (82) = Load <unsafe.Pointer> v519 v503 (p[unsafe.Pointer])
      • v522 (82) = And64 <uintptr> v504 v514
      • v524 (82) = NilCheck <void> v8 v503
      • v525 (82) = OffPtr <*uint16> [82] v8
      • v526 (82) = Load <uint16> v525 v503
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v529 (82) = InlMark <void> [5620] v503
      • v530 (+18) = Convert <uintptr> v520 v503
      • v531 (18) = Add64 <uintptr> v530 v528
      • v532 (18) = Convert <unsafe.Pointer> v531 v503 (b[*bmap], ~R0[unsafe.Pointer])
    • Plainb75 (+82)
    • b75: ← b74
      • v537 (+83) = NilCheck <void> v9 v503
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v9
      • v539 (83) = Load <unsafe.Pointer> v538 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v540 (83) = NeqPtr <bool> v539 v12
    • If v540b77 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v588 (+197) = Rsh64Ux64 <uintptr> [false] v504 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (+198) = Less8U <bool> v589 v579
    • If v590b88 b87 (198)
    • b77: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v544 (+1128) = NilCheck <void> v9 v503
      • v545 (1128) = OffPtr <*uint8> [8] v9
      • v546 (1128) = Load <uint8> v545 v503
      • v548 (1128) = And8 <uint8> v546 v547
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • Plainb78 (+84)
    • b78: ← b77
    • If v549b79 b80 (84)
    • b79: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v553 (m[uintptr])
      • v557 (+88) = And64 <uintptr> v504 v556
      • v560 (88) = NilCheck <void> v8 v503
      • v561 (88) = OffPtr <*uint16> [82] v8
      • v562 (88) = Load <uint16> v561 v503
      • v563 (88) = ZeroExt16to64 <uintptr> v562
      • v564 (88) = Mul64 <uintptr> v557 v563 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v566 (+18) = Convert <uintptr> v539 v503
      • v567 (18) = Add64 <uintptr> v566 v564
      • v568 (18) = Convert <unsafe.Pointer> v567 v503 (b[*bmap], ~R0[unsafe.Pointer], b[*bmap], oldb[*bmap])
    • Plainb81 (+88)
    • b80: ← b78
      • v553 (+86) = Rsh64Ux64 <uintptr> [false] v514 v552 (m[uintptr])
    • Plainb79 (86)
    • b81: ← b79
      • v572 (+89) = InlMark <void> [5623] v503
      • v573 (+205) = NilCheck <void> v568 v503
      • v574 (205) = OffPtr <*[8]uint8> [0] v568
      • v575 (205) = PtrIndex <*uint8> v574 v20
      • v576 (205) = Load <uint8> v575 v503 (h[uint8])
      • v577 (+206) = Less8U <bool> v103 v576
    • If v577b83 b82 (206)
    • b82: ← b81 b83
      • v581 (89) = Phi <bool> v577 v580 (~R0[bool])
    • Plainb84 (+89)
    • b83: ← b81
      • v580 (206) = Less8U <bool> v576 v579
    • Plainb82 (206)
    • b84: ← b82
    • If v581b85 b86 (89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84
    • Plainb85 (+90)
    • b87: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (top[uint8], top[uint8], ~R0[uint8])
    • Plainb89 (+93)
    • b88: ← b76
      • v592 (+199) = Add8 <uint8> v589 v579 (top[uint8])
    • Plainb87 (199)
    • b89: ← b87
    • Plainb90 (+94)
    • b90: ← b89 b113
      • v595 (94) = Phi <*bmap> v756 v707 (b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer])
      • v753 (105) = Phi <mem> v503 v751
      • v597 (+94) = NeqPtr <bool> v595 v596
    • If v597b91 b93 (likely) (94)
    • b91: ← b90
      • v600 (+95) = InlMark <void> [5626] v753
      • v602 (+218) = InlMark <void> [5633] v753
      • v603 (+18) = Convert <uintptr> v595 v753
      • v604 (18) = Add64 <uintptr> v603 v69
      • v605 (18) = Convert <unsafe.Pointer> v604 v753 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb94 (+218)
    • b92: ← b99
      • v692 (+94) = InlMark <void> [5625] v751
      • v694 (+210) = NilCheck <void> v8 v751
      • v695 (210) = OffPtr <*uint16> [82] v8
      • v696 (210) = Load <uint16> v695 v751
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v698 (210) = Sub64 <uintptr> v697 v69 (x[uintptr])
      • v699 (210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v595 v751
      • v701 (18) = Add64 <uintptr> v700 v698
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
    • Plainb112 (+210)
    • b93: ← b90
      • v710 (+105) = PtrIndex <*byte> v709 v20
      • v712 (105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b94: ← b91
    • Plainb95 (+95)
    • b95: ← b94
    • Plainb96 (95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v753 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v609 (+95) = Less64U <bool> v608 v69
    • If v609b97 b99 (likely) (95)
    • b97: ← b96
      • v613 (+97) = NilCheck <void> v752 v751
      • v614 (97) = OffPtr <*int> [8] v752
      • v615 (97) = Load <int> v614 v751
      • v617 (97) = NilCheck <void> v6 v751
      • v618 (97) = OffPtr <*int> [8] v6
      • v619 (97) = Load <int> v618 v751
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b100 b101 (97)
    • b98: ← b105 b108
      • v681 (95) = Phi <mem> v751 v717
      • v682 (+95) = InlMark <void> [5627] v681
      • v683 (+18) = Convert <uintptr> v752 v681
      • v684 (18) = Add64 <uintptr> v683 v166
      • v685 (18) = Convert <unsafe.Pointer> v684 v681 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb111 (+95)
    • b99: ← b96
    • Plainb92 (95)
    • b100: ← b97 b102
      • v634 (97) = Phi <bool> v620 v633
    • If v634b105 b104 (97)
    • b101: ← b97
      • v623 (97) = NilCheck <void> v595 v751
      • v624 (97) = OffPtr <*[8]uint8> [0] v595
      • v626 (97) = IsInBounds <bool> v608 v95
    • If v626b102 b103 (likely) (97)
    • b102: ← b101
      • v629 (97) = PtrIndex <*uint8> v624 v608
      • v631 (97) = Load <uint8> v629 v751
      • v633 (97) = Neq8 <bool> v631 v593
    • Plainb100 (97)
    • b103: ← b101
      • v628 (97) = PanicBounds <mem> [1] v608 v95 v751
    • Exit v628 (97)
    • b104: ← b100
      • v637 (+100) = NilCheck <void> v752 v751
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v639 (100) = Load <unsafe.Pointer> v638 v751
      • v641 (100) = NilCheck <void> v6 v751
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v643 (100) = Load <unsafe.Pointer> v642 v751
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b106 b107 (100)
    • b105: ← b100
    • Plainb98 (+98)
    • b106: ← b104 b107
      • v661 (100) = Phi <bool> v644 v660
      • v717 (101) = Phi <mem> v751 v659
    • If v661b109 b108 (100)
    • b107: ← b104
      • v647 (100) = NilCheck <void> v752 v751
      • v648 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v649 (100) = Load <unsafe.Pointer> v648 v751
      • v651 (100) = NilCheck <void> v6 v751
      • v652 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v653 (100) = Load <unsafe.Pointer> v652 v751
      • v654 (100) = NilCheck <void> v6 v751
      • v655 (100) = OffPtr <*int> [8] v6
      • v656 (100) = Load <int> v655 v751
      • v658 (100) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v649 v653 v656 v751
      • v659 (100) = SelectN <mem> [1] v658
      • v660 (100) = SelectN <bool> [0] v658
    • Plainb106 (100)
    • b108: ← b106
    • Plainb98 (100)
    • b109: ← b106
      • v667 (+101) = NilCheck <void> v8 v717
      • v668 (101) = OffPtr <*uint8> [81] v8
      • v669 (101) = Load <uint8> v668 v717
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v608 v670
      • v672 (101) = Add64 <uintptr> v148 v671 (x[uintptr])
      • v673 (101) = InlMark <void> [5628] v717
      • v674 (+18) = Convert <uintptr> v595 v717
      • v675 (18) = Add64 <uintptr> v674 v672
      • v676 (18) = Convert <unsafe.Pointer> v675 v717 (~R0[unsafe.Pointer])
    • Plainb110 (+101)
    • b110: ← b109
      • v678 (101) = MakeResult <unsafe.Pointer,mem> v676 v717
    • Ret v678 (+101)
    • b111: ← b98
      • v687 (95) = Add64 <uintptr> v608 v173 (i[uintptr])
    • Plainb96 (95)
    • b112: ← b92
      • v706 (210) = NilCheck <void> v702 v751
      • v707 (210) = Load <*bmap> v702 v751 (~R0[*bmap], b[*bmap])
    • Plainb113 (+94)
    • b113: ← b112
    • Plainb90 (94)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v157
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v251
  • name ~R0[unsafe.Pointer]: v255
  • name p[unsafe.Pointer]: v334
  • name x[uintptr]: v340
  • name ~R0[unsafe.Pointer]: v344
  • name p[unsafe.Pointer]: v349
  • name x[uintptr]: v355
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v438
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v471
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name x[uintptr]: v487
  • name ~R0[unsafe.Pointer]: v489
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v595 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name ~R0[bool]: v581
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v672
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v698
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • short circuit [28629 ns]

    b1 b1 If b5 b5 Ret b1->b5 0 b2 b2 If b1->b2 1 b2->b5 0 b4 b4 If b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 If b4->b8 1 b7->b8 0 b10 b10 If b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 If b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 If b14->b15 0 b16 b16 If b15->b16 0 b18 b18 Ret b15->b18 1 b25 b25 If b16->b25 0 b20 b20 If b16->b20 1 b19 b19 If b19->b25 0 b24 b24 If b19->b24 1 b20->b19 0 b22 b22 Exit b20->b22 1 b34 b34 Ret b24->b34 0 b30 b30 If b24->b30 1 b28 b28 If b25->b28 0 b29 b29 Exit b25->b29 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 If b37->b38 0 b39 b39 If b38->b39 0 b41 b41 If b38->b41 1 b48 b48 If b39->b48 0 b43 b43 If b39->b43 1 b68 b68 If b41->b68 0 b66 b66 Ret b41->b66 1 b42 b42 If b42->b48 0 b47 b47 If b42->b47 1 b43->b42 0 b45 b45 Exit b43->b45 1 b55 b55 Ret b47->b55 0 b53 b53 If b47->b53 1 b51 b51 If b48->b51 0 b52 b52 Exit b48->b52 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 If b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 If b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 If b75->b78 0 b76 b76 If b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b81 b81 If b78->b81 0 b80 b80 Plain b78->b80 1 b80->b81 0 b84 b84 If b81->b84 0 b86 b86 Plain b81->b86 1 b85 b85 Plain b84->b85 0 b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b90 b90 If b89->b90 0 b95 b95 Plain b90->b95 0 b93 b93 Ret b90->b93 1 b96 b96 If b95->b96 0 b97 b97 If b96->b97 0 b113 b113 Plain b96->b113 1 b105 b105 Plain b97->b105 0 b101 b101 If b97->b101 1 b100 b100 If b100->b105 0 b104 b104 If b100->b104 1 b101->b100 0 b103 b103 Exit b101->b103 1 b110 b110 Ret b104->b110 0 b106 b106 If b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (key[*stringStruct], sp[*string], ~R0[*stringStruct], p[unsafe.Pointer])
      • v8 (13) = Arg <*abi.MapType> {t} (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = Arg <*hmap> {h} (h[*hmap], h[*hmap])
      • v10 (13) = Arg <string> {ky}
      • v11 (+13) = Store <mem> {string} v6 v10 v1
      • v12 (?) = ConstNil <unsafe.Pointer>
      • v13 (?) = ConstNil <*hmap>
      • v14 (+18) = EqPtr <bool> v9 v13
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v38 (?) = ConstString <string> {"concurrent map read and map write"}
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (keymaybe[uintptr], x[uintptr], x[uintptr], x[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v95 (?) = Const64 <int> [8]
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v166 (?) = Const64 <uintptr> [16] (x[uintptr], x[uintptr], x[uintptr])
      • v173 (?) = Const64 <uintptr> [1]
      • v176 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v277 (?) = Const64 <int> [1]
      • v282 (?) = Const64 <uint> [8]
      • v286 (?) = Const64 <int> [2]
      • v291 (?) = Const64 <uint> [16]
      • v295 (?) = Const64 <int> [3]
      • v300 (?) = Const64 <uint> [24]
      • v339 (?) = Const64 <uintptr> [4]
      • v435 (?) = Const64 <uintptr> [2]
      • v479 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v596 (?) = ConstNil <*bmap>
      • v709 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v708 (?) = ConstBool <bool> [true]
      • v705 (?) = ConstBool <bool> [false]
    • If v14b5 b2 (18)
    • b2: ← b1
      • v17 (18) = NilCheck <void> v9 v11
      • v18 (18) = OffPtr <*int> [0] v9
      • v19 (18) = Load <int> v18 v11
      • v21 (18) = Eq64 <bool> v19 v20
      • v22 (18) = Copy <bool> v21
    • If v22b5 b4 (18)
    • b3:
    • BlockInvalid (18)
    • b4: ← b2
      • v31 (+21) = NilCheck <void> v9 v11
      • v32 (21) = OffPtr <*uint8> [8] v9
      • v33 (21) = Load <uint8> v32 v11
      • v35 (21) = And8 <uint8> v33 v34
      • v37 (21) = Neq8 <bool> v35 v36
    • If v37b7 b8 (21)
    • b5: ← b2 b1
      • v25 (+19) = PtrIndex <*byte> v23 v20
      • v27 (19) = MakeResult <unsafe.Pointer,mem> v25 v11
    • Ret v27 (+19)
    • b6:
    • BlockInvalid (+24)
    • b7: ← b4
      • v40 (+22) = StaticLECall <mem> {AuxCall{runtime.fatal}} [16] v38 v11
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v11 v41
      • v43 (+24) = InlMark <void> [5605] v42
      • v49 (+25) = NilCheck <void> v9 v42
      • v50 (25) = OffPtr <*uint8> [9] v9
      • v51 (25) = Load <uint8> v50 v42
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v55 (+27) = NilCheck <void> v9 v42
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v9
      • v57 (27) = Load <unsafe.Pointer> v56 v42 (p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer])
      • v60 (+28) = NilCheck <void> v6 v42
      • v61 (28) = OffPtr <*int> [8] v6
      • v62 (28) = Load <int> v61 v42
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b14 b37 (28)
    • b11:
    • BlockInvalid (+218)
    • b12:
    • BlockInvalid (+218)
    • b13:
    • BlockInvalid (+30)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v71 (+18) = Convert <uintptr> v57 v42
      • v72 (18) = Add64 <uintptr> v71 v69
      • v73 (18) = Convert <unsafe.Pointer> v72 v42 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v78 (+30) = Less64U <bool> v77 v69
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v82 (+32) = NilCheck <void> v816 v810
      • v83 (32) = OffPtr <*int> [8] v816
      • v84 (32) = Load <int> v83 v810
      • v86 (32) = NilCheck <void> v6 v810
      • v87 (32) = OffPtr <*int> [8] v6
      • v88 (32) = Load <int> v87 v810
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b25 b20 (32)
    • b17:
    • BlockInvalid (+30)
    • b18: ← b15 b27
      • v177 (+42) = PtrIndex <*byte> v176 v20
      • v179 (42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b20
      • v99 (32) = PtrIndex <*uint8> v93 v77
      • v101 (32) = Load <uint8> v99 v810 (x[uint8])
      • v102 (32) = InlMark <void> [5608] v810
      • v104 (+113) = Leq8U <bool> v101 v103 (~R0[bool])
      • v106 (32) = Copy <bool> v104
    • If v106b25 b24 (+32)
    • b20: ← b16
      • v92 (32) = NilCheck <void> v57 v810
      • v93 (32) = OffPtr <*[8]uint8> [0] v57
      • v96 (32) = IsInBounds <bool> v77 v95
    • If v96b19 b22 (likely) (32)
    • b21:
    • BlockInvalid (+32)
    • b22: ← b20
      • v98 (32) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v98 (32)
    • b23:
    • BlockInvalid (+32)
    • b24: ← b19
      • v121 (+38) = NilCheck <void> v816 v810
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v123 (38) = Load <unsafe.Pointer> v122 v810
      • v125 (38) = NilCheck <void> v6 v810
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v127 (38) = Load <unsafe.Pointer> v126 v810
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b34 b30 (38)
    • b25: ← b19 b16
      • v109 (+33) = NilCheck <void> v57 v810
      • v110 (33) = OffPtr <*[8]uint8> [0] v57
      • v112 (33) = IsInBounds <bool> v77 v95
    • If v112b28 b29 (likely) (33)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b25
      • v115 (33) = PtrIndex <*uint8> v110 v77
      • v117 (33) = Load <uint8> v115 v810
      • v118 (33) = Eq8 <bool> v117 v36
    • If v118b27 b26 (33)
    • b29: ← b25
      • v114 (33) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v114 (33)
    • b30: ← b24
      • v131 (38) = NilCheck <void> v816 v810
      • v132 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v133 (38) = Load <unsafe.Pointer> v132 v810
      • v135 (38) = NilCheck <void> v6 v810
      • v136 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v137 (38) = Load <unsafe.Pointer> v136 v810
      • v138 (38) = NilCheck <void> v6 v810
      • v139 (38) = OffPtr <*int> [8] v6
      • v140 (38) = Load <int> v139 v810
      • v142 (38) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v133 v137 v140 v810
      • v143 (38) = SelectN <mem> [1] v142
      • v144 (38) = SelectN <bool> [0] v142
      • v145 (38) = Copy <bool> v144
    • If v145b34 b32 (38)
    • b31:
    • BlockInvalid (38)
    • b32: ← b30
      • v798 (39) = Copy <mem> v143
    • Plainb35 (38)
    • b33:
    • BlockInvalid (+39)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v152 (+39) = NilCheck <void> v8 v703
      • v153 (39) = OffPtr <*uint8> [81] v8
      • v154 (39) = Load <uint8> v153 v703
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v77 v155
      • v157 (39) = Add64 <uintptr> v148 v156 (x[uintptr])
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v160 (18) = Add64 <uintptr> v159 v157
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v798
      • v168 (+30) = InlMark <void> [5607] v167
      • v169 (+18) = Convert <uintptr> v816 v167
      • v170 (18) = Add64 <uintptr> v169 v166
      • v171 (18) = Convert <unsafe.Pointer> v170 v167 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v174 (+30) = Add64 <uintptr> v77 v173 (i[uintptr])
    • Plainb15 (30)
    • b36:
    • BlockInvalid (+46)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v186 (+18) = Convert <uintptr> v57 v42
      • v187 (18) = Add64 <uintptr> v186 v69
      • v188 (18) = Convert <unsafe.Pointer> v187 v42 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (keymaybe[uintptr], i[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (p[unsafe.Pointer], kptr[unsafe.Pointer], k[*stringStruct])
      • v192 (+46) = Less64U <bool> v191 v69
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v196 (+48) = NilCheck <void> v794 v42
      • v197 (48) = OffPtr <*int> [8] v794
      • v198 (48) = Load <int> v197 v42
      • v200 (48) = NilCheck <void> v6 v42
      • v201 (48) = OffPtr <*int> [8] v6
      • v202 (48) = Load <int> v201 v42
      • v203 (48) = Neq64 <bool> v198 v202
    • If v203b48 b43 (48)
    • b40:
    • BlockInvalid (+46)
    • b41: ← b38 b50
      • v431 (+71) = Neq64 <bool> v789 v69
    • If v431b68 b66 (71)
    • b42: ← b43
      • v212 (48) = PtrIndex <*uint8> v207 v191
      • v214 (48) = Load <uint8> v212 v42 (x[uint8])
      • v215 (48) = InlMark <void> [5612] v42
      • v216 (+113) = Leq8U <bool> v214 v103 (~R0[bool])
      • v218 (48) = Copy <bool> v216
    • If v218b48 b47 (+48)
    • b43: ← b39
      • v206 (48) = NilCheck <void> v57 v42
      • v207 (48) = OffPtr <*[8]uint8> [0] v57
      • v209 (48) = IsInBounds <bool> v191 v95
    • If v209b42 b45 (likely) (48)
    • b44:
    • BlockInvalid (+48)
    • b45: ← b43
      • v211 (48) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v211 (48)
    • b46:
    • BlockInvalid (+48)
    • b47: ← b42
      • v233 (+54) = NilCheck <void> v794 v42
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v794
      • v235 (54) = Load <unsafe.Pointer> v234 v42
      • v237 (54) = NilCheck <void> v6 v42
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v6
      • v239 (54) = Load <unsafe.Pointer> v238 v42
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b55 b53 (54)
    • b48: ← b42 b39
      • v221 (+49) = NilCheck <void> v57 v42
      • v222 (49) = OffPtr <*[8]uint8> [0] v57
      • v224 (49) = IsInBounds <bool> v191 v95
    • If v224b51 b52 (likely) (49)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b48
      • v227 (49) = PtrIndex <*uint8> v222 v191
      • v229 (49) = Load <uint8> v227 v42
      • v230 (49) = Eq8 <bool> v229 v36
    • If v230b50 b49 (49)
    • b52: ← b48
      • v226 (49) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v226 (49)
    • b53: ← b47
      • v261 (+58) = NilCheck <void> v6 v42
      • v262 (58) = OffPtr <*unsafe.Pointer> [0] v6
      • v263 (58) = Load <unsafe.Pointer> v262 v42
      • v266 (58) = NilCheck <void> v794 v42
      • v267 (58) = OffPtr <*unsafe.Pointer> [0] v794
      • v268 (58) = Load <unsafe.Pointer> v267 v42
      • v270 (58) = NilCheck <void> v263 v42
      • v272 (58) = PtrIndex <*byte> v263 v20
      • v273 (58) = Load <byte> v272 v42
      • v275 (58) = ZeroExt8to32 <uint32> v273
      • v276 (58) = NilCheck <void> v263 v42
      • v278 (58) = PtrIndex <*byte> v263 v277
      • v279 (58) = Load <byte> v278 v42
      • v281 (58) = ZeroExt8to32 <uint32> v279
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v285 (58) = NilCheck <void> v263 v42
      • v287 (58) = PtrIndex <*byte> v263 v286
      • v288 (58) = Load <byte> v287 v42
      • v290 (58) = ZeroExt8to32 <uint32> v288
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v294 (58) = NilCheck <void> v263 v42
      • v296 (58) = PtrIndex <*byte> v263 v295
      • v297 (58) = Load <byte> v296 v42
      • v299 (58) = ZeroExt8to32 <uint32> v297
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v302 (58) = Or32 <uint32> v293 v301
      • v303 (58) = NilCheck <void> v268 v42
      • v304 (58) = PtrIndex <*byte> v268 v20
      • v305 (58) = Load <byte> v304 v42
      • v307 (58) = ZeroExt8to32 <uint32> v305
      • v308 (58) = NilCheck <void> v268 v42
      • v309 (58) = PtrIndex <*byte> v268 v277
      • v310 (58) = Load <byte> v309 v42
      • v312 (58) = ZeroExt8to32 <uint32> v310
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v315 (58) = NilCheck <void> v268 v42
      • v316 (58) = PtrIndex <*byte> v268 v286
      • v317 (58) = Load <byte> v316 v42
      • v319 (58) = ZeroExt8to32 <uint32> v317
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v322 (58) = NilCheck <void> v268 v42
      • v323 (58) = PtrIndex <*byte> v268 v295
      • v324 (58) = Load <byte> v323 v42
      • v326 (58) = ZeroExt8to32 <uint32> v324
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v328 (58) = Or32 <uint32> v321 v327
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b59 (58)
    • b54:
    • BlockInvalid (+55)
    • b55: ← b47
      • v246 (+55) = NilCheck <void> v8 v42
      • v247 (55) = OffPtr <*uint8> [81] v8
      • v248 (55) = Load <uint8> v247 v42
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v191 v249
      • v251 (55) = Add64 <uintptr> v148 v250 (x[uintptr])
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v254 (18) = Add64 <uintptr> v253 v251
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b56:
    • BlockInvalid (+62)
    • b57: ← b53
    • Plainb65 (+59)
    • b58:
    • BlockInvalid (+62)
    • b59: ← b53
      • v332 (+62) = NilCheck <void> v6 v42
      • v333 (62) = OffPtr <*unsafe.Pointer> [0] v6
      • v334 (62) = Load <unsafe.Pointer> v333 v42 (p[unsafe.Pointer])
      • v335 (62) = NilCheck <void> v6 v42
      • v336 (62) = OffPtr <*int> [8] v6
      • v337 (62) = Load <int> v336 v42
      • v340 (62) = Sub64 <uintptr> v337 v339 (x[uintptr])
      • v341 (62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v334 v42
      • v343 (18) = Add64 <uintptr> v342 v340
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v347 (+62) = NilCheck <void> v794 v42
      • v348 (62) = OffPtr <*unsafe.Pointer> [0] v794
      • v349 (62) = Load <unsafe.Pointer> v348 v42 (p[unsafe.Pointer])
      • v351 (62) = NilCheck <void> v6 v42
      • v352 (62) = OffPtr <*int> [8] v6
      • v353 (62) = Load <int> v352 v42
      • v355 (62) = Sub64 <uintptr> v353 v339 (x[uintptr])
      • v356 (62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v349 v42
      • v358 (18) = Add64 <uintptr> v357 v355
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = NilCheck <void> v344 v42
      • v366 (62) = PtrIndex <*byte> v344 v20
      • v367 (62) = Load <byte> v366 v42
      • v369 (62) = ZeroExt8to32 <uint32> v367
      • v370 (62) = NilCheck <void> v344 v42
      • v371 (62) = PtrIndex <*byte> v344 v277
      • v372 (62) = Load <byte> v371 v42
      • v374 (62) = ZeroExt8to32 <uint32> v372
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v377 (62) = NilCheck <void> v344 v42
      • v378 (62) = PtrIndex <*byte> v344 v286
      • v379 (62) = Load <byte> v378 v42
      • v381 (62) = ZeroExt8to32 <uint32> v379
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v376 v382
      • v384 (62) = NilCheck <void> v344 v42
      • v385 (62) = PtrIndex <*byte> v344 v295
      • v386 (62) = Load <byte> v385 v42
      • v388 (62) = ZeroExt8to32 <uint32> v386
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v390 (62) = Or32 <uint32> v383 v389
      • v391 (62) = NilCheck <void> v359 v42
      • v392 (62) = PtrIndex <*byte> v359 v20
      • v393 (62) = Load <byte> v392 v42
      • v395 (62) = ZeroExt8to32 <uint32> v393
      • v396 (62) = NilCheck <void> v359 v42
      • v397 (62) = PtrIndex <*byte> v359 v277
      • v398 (62) = Load <byte> v397 v42
      • v400 (62) = ZeroExt8to32 <uint32> v398
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v403 (62) = NilCheck <void> v359 v42
      • v404 (62) = PtrIndex <*byte> v359 v286
      • v405 (62) = Load <byte> v404 v42
      • v407 (62) = ZeroExt8to32 <uint32> v405
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v402 v408
      • v410 (62) = NilCheck <void> v359 v42
      • v411 (62) = PtrIndex <*byte> v359 v295
      • v412 (62) = Load <byte> v411 v42
      • v414 (62) = ZeroExt8to32 <uint32> v412
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v416 (62) = Or32 <uint32> v409 v415
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v419 (+65) = Neq64 <bool> v789 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b64:
    • BlockInvalid (+80)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v424 (+18) = Convert <uintptr> v794 v42
      • v425 (18) = Add64 <uintptr> v424 v166
      • v426 (18) = Convert <unsafe.Pointer> v425 v42 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v428 (+46) = Add64 <uintptr> v191 v173 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (+77) = PtrIndex <*byte> v479 v20
      • v482 (77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b67:
    • BlockInvalid (+72)
    • b68: ← b41
      • v436 (+72) = Mul64 <uintptr> v789 v435
      • v437 (72) = Mul64 <uintptr> v436 v69
      • v438 (72) = Add64 <uintptr> v69 v437 (x[uintptr])
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v442 (18) = Add64 <uintptr> v441 v438
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v447 (+73) = NilCheck <void> v443 v42
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v443
      • v449 (73) = Load <unsafe.Pointer> v448 v42
      • v451 (73) = NilCheck <void> v6 v42
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v6
      • v453 (73) = Load <unsafe.Pointer> v452 v42
      • v454 (73) = NilCheck <void> v6 v42
      • v455 (73) = OffPtr <*int> [8] v6
      • v456 (73) = Load <int> v455 v42
      • v458 (73) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v456 v42
      • v459 (73) = SelectN <mem> [1] v458
      • v460 (73) = SelectN <bool> [0] v458
    • If v460b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b70:
    • BlockInvalid (+74)
    • b71: ← b68
      • v466 (+74) = NilCheck <void> v8 v459
      • v467 (74) = OffPtr <*uint8> [81] v8
      • v468 (74) = Load <uint8> v467 v459
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v789 v469
      • v471 (74) = Add64 <uintptr> v148 v470 (x[uintptr])
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v474 (18) = Add64 <uintptr> v473 v471
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b72:
    • BlockInvalid (+192)
    • b73:
    • BlockInvalid (+81)
    • b74:
    • BlockInvalid (+82)
    • b75: ← b63 b9
      • v486 (+80) = InlMark <void> [5618] v42
      • v487 (+221) = Convert <uintptr> v6 v42 (x[uintptr])
      • v488 (+222) = Xor64 <uintptr> v487 v75
      • v489 (222) = Convert <unsafe.Pointer> v488 v42 (~R0[unsafe.Pointer])
      • v492 (+80) = NilCheck <void> v9 v42
      • v493 (80) = OffPtr <*uint32> [12] v9
      • v494 (80) = Load <uint32> v493 v42
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v497 (80) = NilCheck <void> v8 v42
      • v498 (80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v8
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v42
      • v501 (80) = Load <uintptr> v499 v42
      • v502 (80) = ClosureLECall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v489 v495 v42
      • v503 (80) = SelectN <mem> [1] v502
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v505 (+81) = NilCheck <void> v9 v503
      • v506 (81) = OffPtr <*uint8> [9] v9
      • v507 (81) = Load <uint8> v506 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (+187) = And8 <uint8> v507 v510
      • v512 (187) = Lsh64x8 <uintptr> [false] v173 v511 (~R0[uintptr])
      • v514 (+192) = Sub64 <uintptr> v512 v173 (~R0[uintptr], m[uintptr])
      • v518 (+82) = NilCheck <void> v9 v503
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v9
      • v520 (82) = Load <unsafe.Pointer> v519 v503 (p[unsafe.Pointer])
      • v522 (82) = And64 <uintptr> v504 v514
      • v524 (82) = NilCheck <void> v8 v503
      • v525 (82) = OffPtr <*uint16> [82] v8
      • v526 (82) = Load <uint16> v525 v503
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v529 (82) = InlMark <void> [5620] v503
      • v530 (+18) = Convert <uintptr> v520 v503
      • v531 (18) = Add64 <uintptr> v530 v528
      • v532 (18) = Convert <unsafe.Pointer> v531 v503 (b[*bmap], ~R0[unsafe.Pointer])
      • v537 (+83) = NilCheck <void> v9 v503
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v9
      • v539 (83) = Load <unsafe.Pointer> v538 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v540 (83) = NeqPtr <bool> v539 v12
    • If v540b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v588 (+197) = Rsh64Ux64 <uintptr> [false] v504 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (+198) = Less8U <bool> v589 v579
    • If v590b88 b89 (198)
    • b77:
    • BlockInvalid (+84)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v544 (+1128) = NilCheck <void> v9 v503
      • v545 (1128) = OffPtr <*uint8> [8] v9
      • v546 (1128) = Load <uint8> v545 v503
      • v548 (1128) = And8 <uint8> v546 v547
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • If v549b81 b80 (+84)
    • b79:
    • BlockInvalid (+88)
    • b80: ← b78
      • v553 (+86) = Rsh64Ux64 <uintptr> [false] v514 v552 (m[uintptr])
    • Plainb81 (86)
    • b81: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v553 (m[uintptr])
      • v557 (+88) = And64 <uintptr> v504 v556
      • v560 (88) = NilCheck <void> v8 v503
      • v561 (88) = OffPtr <*uint16> [82] v8
      • v562 (88) = Load <uint16> v561 v503
      • v563 (88) = ZeroExt16to64 <uintptr> v562
      • v564 (88) = Mul64 <uintptr> v557 v563 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v566 (+18) = Convert <uintptr> v539 v503
      • v567 (18) = Add64 <uintptr> v566 v564
      • v568 (18) = Convert <unsafe.Pointer> v567 v503 (b[*bmap], b[*bmap], ~R0[unsafe.Pointer], oldb[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v573 (+205) = NilCheck <void> v568 v503
      • v574 (205) = OffPtr <*[8]uint8> [0] v568
      • v575 (205) = PtrIndex <*uint8> v574 v20
      • v576 (205) = Load <uint8> v575 v503 (h[uint8])
      • v577 (+206) = Less8U <bool> v103 v576
    • If v577b84 b86 (206)
    • b82:
    • BlockInvalid (+89)
    • b83:
    • BlockInvalid (206)
    • b84: ← b81
      • v580 (206) = Less8U <bool> v576 v579
      • v581 (89) = Copy <bool> v580 (~R0[bool])
    • If v581b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84 b81
    • Plainb85 (+90)
    • b87:
    • BlockInvalid (+93)
    • b88: ← b76
      • v592 (+199) = Add8 <uint8> v589 v579 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (top[uint8], ~R0[uint8], top[uint8])
    • Plainb90 (+94)
    • b90: ← b89 b113
      • v595 (94) = Phi <*bmap> v756 v707 (b[*bmap], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer])
      • v753 (105) = Phi <mem> v503 v751
      • v597 (+94) = NeqPtr <bool> v595 v596
    • If v597b95 b93 (likely) (94)
    • b91:
    • BlockInvalid (+218)
    • b92:
    • BlockInvalid (+210)
    • b93: ← b90
      • v710 (+105) = PtrIndex <*byte> v709 v20
      • v712 (105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b94:
    • BlockInvalid (+95)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v753
      • v602 (+218) = InlMark <void> [5633] v753
      • v603 (+18) = Convert <uintptr> v595 v753
      • v604 (18) = Add64 <uintptr> v603 v69
      • v605 (18) = Convert <unsafe.Pointer> v604 v753 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v753 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v609 (+95) = Less64U <bool> v608 v69
    • If v609b97 b113 (likely) (95)
    • b97: ← b96
      • v613 (+97) = NilCheck <void> v752 v751
      • v614 (97) = OffPtr <*int> [8] v752
      • v615 (97) = Load <int> v614 v751
      • v617 (97) = NilCheck <void> v6 v751
      • v618 (97) = OffPtr <*int> [8] v6
      • v619 (97) = Load <int> v618 v751
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b105 b101 (97)
    • b98:
    • BlockInvalid (+95)
    • b99:
    • BlockInvalid (95)
    • b100: ← b101
      • v629 (97) = PtrIndex <*uint8> v624 v608
      • v631 (97) = Load <uint8> v629 v751
      • v633 (97) = Neq8 <bool> v631 v593
      • v634 (97) = Copy <bool> v633
    • If v634b105 b104 (97)
    • b101: ← b97
      • v623 (97) = NilCheck <void> v595 v751
      • v624 (97) = OffPtr <*[8]uint8> [0] v595
      • v626 (97) = IsInBounds <bool> v608 v95
    • If v626b100 b103 (likely) (97)
    • b102:
    • BlockInvalid (97)
    • b103: ← b101
      • v628 (97) = PanicBounds <mem> [1] v608 v95 v751
    • Exit v628 (97)
    • b104: ← b100
      • v637 (+100) = NilCheck <void> v752 v751
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v639 (100) = Load <unsafe.Pointer> v638 v751
      • v641 (100) = NilCheck <void> v6 v751
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v643 (100) = Load <unsafe.Pointer> v642 v751
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v647 (100) = NilCheck <void> v752 v751
      • v648 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v649 (100) = Load <unsafe.Pointer> v648 v751
      • v651 (100) = NilCheck <void> v6 v751
      • v652 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v653 (100) = Load <unsafe.Pointer> v652 v751
      • v654 (100) = NilCheck <void> v6 v751
      • v655 (100) = OffPtr <*int> [8] v6
      • v656 (100) = Load <int> v655 v751
      • v658 (100) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v649 v653 v656 v751
      • v659 (100) = SelectN <mem> [1] v658
      • v660 (100) = SelectN <bool> [0] v658
      • v661 (100) = Copy <bool> v660
    • If v661b110 b108 (100)
    • b107:
    • BlockInvalid (100)
    • b108: ← b106
      • v717 (101) = Copy <mem> v659
    • Plainb111 (100)
    • b109:
    • BlockInvalid (+101)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v667 (+101) = NilCheck <void> v8 v704
      • v668 (101) = OffPtr <*uint8> [81] v8
      • v669 (101) = Load <uint8> v668 v704
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v608 v670
      • v672 (101) = Add64 <uintptr> v148 v671 (x[uintptr])
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v595 v704
      • v675 (18) = Add64 <uintptr> v674 v672
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v717
      • v682 (+95) = InlMark <void> [5627] v681
      • v683 (+18) = Convert <uintptr> v752 v681
      • v684 (18) = Add64 <uintptr> v683 v166
      • v685 (18) = Convert <unsafe.Pointer> v684 v681 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v687 (+95) = Add64 <uintptr> v608 v173 (i[uintptr])
    • Plainb96 (95)
    • b112:
    • BlockInvalid (+94)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v694 (+210) = NilCheck <void> v8 v751
      • v695 (210) = OffPtr <*uint16> [82] v8
      • v696 (210) = Load <uint16> v695 v751
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v698 (210) = Sub64 <uintptr> v697 v69 (x[uintptr])
      • v699 (210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v595 v751
      • v701 (18) = Add64 <uintptr> v700 v698
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = NilCheck <void> v702 v751
      • v707 (210) = Load <*bmap> v702 v751 (~R0[*bmap], b[*bmap])
    • Plainb90 (+94)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v157
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v251
  • name ~R0[unsafe.Pointer]: v255
  • name p[unsafe.Pointer]: v334
  • name x[uintptr]: v340
  • name ~R0[unsafe.Pointer]: v344
  • name p[unsafe.Pointer]: v349
  • name x[uintptr]: v355
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v438
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v471
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name x[uintptr]: v487
  • name ~R0[unsafe.Pointer]: v489
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v595 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name ~R0[bool]: v581
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v672
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v698
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • decompose user [5825 ns]

    pre-opt deadcode [85040 ns]

    b1 b1 If b5 b5 Ret b1->b5 0 b2 b2 If b1->b2 1 b2->b5 0 b4 b4 If b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 If b4->b8 1 b7->b8 0 b10 b10 If b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 If b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 If b14->b15 0 b16 b16 If b15->b16 0 b18 b18 Ret b15->b18 1 b25 b25 If b16->b25 0 b20 b20 If b16->b20 1 b19 b19 If b19->b25 0 b24 b24 If b19->b24 1 b20->b19 0 b22 b22 Exit b20->b22 1 b34 b34 Ret b24->b34 0 b30 b30 If b24->b30 1 b28 b28 If b25->b28 0 b29 b29 Exit b25->b29 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 If b37->b38 0 b39 b39 If b38->b39 0 b41 b41 If b38->b41 1 b48 b48 If b39->b48 0 b43 b43 If b39->b43 1 b68 b68 If b41->b68 0 b66 b66 Ret b41->b66 1 b42 b42 If b42->b48 0 b47 b47 If b42->b47 1 b43->b42 0 b45 b45 Exit b43->b45 1 b55 b55 Ret b47->b55 0 b53 b53 If b47->b53 1 b51 b51 If b48->b51 0 b52 b52 Exit b48->b52 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 If b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 If b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 If b75->b78 0 b76 b76 If b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b81 b81 If b78->b81 0 b80 b80 Plain b78->b80 1 b80->b81 0 b84 b84 If b81->b84 0 b86 b86 Plain b81->b86 1 b85 b85 Plain b84->b85 0 b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b90 b90 If b89->b90 0 b95 b95 Plain b90->b95 0 b93 b93 Ret b90->b93 1 b96 b96 If b95->b96 0 b97 b97 If b96->b97 0 b113 b113 Plain b96->b113 1 b105 b105 Plain b97->b105 0 b101 b101 If b97->b101 1 b100 b100 If b100->b105 0 b104 b104 If b100->b104 1 b101->b100 0 b103 b103 Exit b101->b103 1 b110 b110 Ret b104->b110 0 b106 b106 If b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (~R0[*stringStruct], p[unsafe.Pointer], sp[*string], key[*stringStruct])
      • v8 (13) = Arg <*abi.MapType> {t} (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = Arg <*hmap> {h} (h[*hmap], h[*hmap])
      • v10 (13) = Arg <string> {ky}
      • v11 (+13) = Store <mem> {string} v6 v10 v1
      • v12 (?) = ConstNil <unsafe.Pointer>
      • v13 (?) = ConstNil <*hmap>
      • v14 (+18) = EqPtr <bool> v9 v13
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v38 (?) = ConstString <string> {"concurrent map read and map write"}
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (x[uintptr], x[uintptr], keymaybe[uintptr], x[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v95 (?) = Const64 <int> [8]
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v166 (?) = Const64 <uintptr> [16] (x[uintptr], x[uintptr], x[uintptr])
      • v173 (?) = Const64 <uintptr> [1]
      • v176 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v277 (?) = Const64 <int> [1]
      • v282 (?) = Const64 <uint> [8]
      • v286 (?) = Const64 <int> [2]
      • v291 (?) = Const64 <uint> [16]
      • v295 (?) = Const64 <int> [3]
      • v300 (?) = Const64 <uint> [24]
      • v339 (?) = Const64 <uintptr> [4]
      • v435 (?) = Const64 <uintptr> [2]
      • v479 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v596 (?) = ConstNil <*bmap>
      • v709 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
    • If v14b5 b2 (18)
    • b2: ← b1
      • v17 (18) = NilCheck <void> v9 v11
      • v18 (18) = OffPtr <*int> [0] v9
      • v19 (18) = Load <int> v18 v11
      • v21 (18) = Eq64 <bool> v19 v20
    • If v21b5 b4 (18)
    • b4: ← b2
      • v31 (+21) = NilCheck <void> v9 v11
      • v32 (21) = OffPtr <*uint8> [8] v9
      • v33 (21) = Load <uint8> v32 v11
      • v35 (21) = And8 <uint8> v33 v34
      • v37 (21) = Neq8 <bool> v35 v36
    • If v37b7 b8 (21)
    • b5: ← b2 b1
      • v25 (+19) = PtrIndex <*byte> v23 v20
      • v27 (19) = MakeResult <unsafe.Pointer,mem> v25 v11
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = StaticLECall <mem> {AuxCall{runtime.fatal}} [16] v38 v11
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v11 v41
      • v49 (+25) = NilCheck <void> v9 v42
      • v50 (25) = OffPtr <*uint8> [9] v9
      • v51 (25) = Load <uint8> v50 v42
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v55 (+27) = NilCheck <void> v9 v42
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v9
      • v57 (27) = Load <unsafe.Pointer> v56 v42 (p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap])
      • v60 (+28) = NilCheck <void> v6 v42
      • v61 (28) = OffPtr <*int> [8] v6
      • v62 (28) = Load <int> v61 v42
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v71 (+18) = Convert <uintptr> v57 v42
      • v72 (18) = Add64 <uintptr> v71 v69
      • v73 (18) = Convert <unsafe.Pointer> v72 v42 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v78 (+30) = Less64U <bool> v77 v69
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v82 (+32) = NilCheck <void> v816 v810
      • v83 (32) = OffPtr <*int> [8] v816
      • v84 (32) = Load <int> v83 v810
      • v86 (32) = NilCheck <void> v6 v810
      • v87 (32) = OffPtr <*int> [8] v6
      • v88 (32) = Load <int> v87 v810
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b25 b20 (32)
    • b18: ← b15 b27
      • v177 (+42) = PtrIndex <*byte> v176 v20
      • v179 (42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b20
      • v99 (32) = PtrIndex <*uint8> v93 v77
      • v101 (32) = Load <uint8> v99 v810 (x[uint8])
      • v102 (32) = InlMark <void> [5608] v810
      • v104 (+113) = Leq8U <bool> v101 v103 (~R0[bool])
    • If v104b25 b24 (+32)
    • b20: ← b16
      • v92 (32) = NilCheck <void> v57 v810
      • v93 (32) = OffPtr <*[8]uint8> [0] v57
      • v96 (32) = IsInBounds <bool> v77 v95
    • If v96b19 b22 (likely) (32)
    • b22: ← b20
      • v98 (32) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v98 (32)
    • b24: ← b19
      • v121 (+38) = NilCheck <void> v816 v810
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v123 (38) = Load <unsafe.Pointer> v122 v810
      • v125 (38) = NilCheck <void> v6 v810
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v127 (38) = Load <unsafe.Pointer> v126 v810
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b34 b30 (38)
    • b25: ← b19 b16
      • v109 (+33) = NilCheck <void> v57 v810
      • v110 (33) = OffPtr <*[8]uint8> [0] v57
      • v112 (33) = IsInBounds <bool> v77 v95
    • If v112b28 b29 (likely) (33)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b25
      • v115 (33) = PtrIndex <*uint8> v110 v77
      • v117 (33) = Load <uint8> v115 v810
      • v118 (33) = Eq8 <bool> v117 v36
    • If v118b27 b26 (33)
    • b29: ← b25
      • v114 (33) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v114 (33)
    • b30: ← b24
      • v131 (38) = NilCheck <void> v816 v810
      • v132 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v133 (38) = Load <unsafe.Pointer> v132 v810
      • v135 (38) = NilCheck <void> v6 v810
      • v136 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v137 (38) = Load <unsafe.Pointer> v136 v810
      • v138 (38) = NilCheck <void> v6 v810
      • v139 (38) = OffPtr <*int> [8] v6
      • v140 (38) = Load <int> v139 v810
      • v142 (38) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v133 v137 v140 v810
      • v143 (38) = SelectN <mem> [1] v142
      • v144 (38) = SelectN <bool> [0] v142
    • If v144b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v152 (+39) = NilCheck <void> v8 v703
      • v153 (39) = OffPtr <*uint8> [81] v8
      • v154 (39) = Load <uint8> v153 v703
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v77 v155
      • v157 (39) = Add64 <uintptr> v148 v156 (x[uintptr])
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v160 (18) = Add64 <uintptr> v159 v157
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v169 (+18) = Convert <uintptr> v816 v167
      • v170 (18) = Add64 <uintptr> v169 v166
      • v171 (18) = Convert <unsafe.Pointer> v170 v167 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v174 (+30) = Add64 <uintptr> v77 v173 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v186 (+18) = Convert <uintptr> v57 v42
      • v187 (18) = Add64 <uintptr> v186 v69
      • v188 (18) = Convert <unsafe.Pointer> v187 v42 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (i[uintptr], keymaybe[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v192 (+46) = Less64U <bool> v191 v69
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v196 (+48) = NilCheck <void> v794 v42
      • v197 (48) = OffPtr <*int> [8] v794
      • v198 (48) = Load <int> v197 v42
      • v200 (48) = NilCheck <void> v6 v42
      • v201 (48) = OffPtr <*int> [8] v6
      • v202 (48) = Load <int> v201 v42
      • v203 (48) = Neq64 <bool> v198 v202
    • If v203b48 b43 (48)
    • b41: ← b38 b50
      • v431 (+71) = Neq64 <bool> v789 v69
    • If v431b68 b66 (71)
    • b42: ← b43
      • v212 (48) = PtrIndex <*uint8> v207 v191
      • v214 (48) = Load <uint8> v212 v42 (x[uint8])
      • v215 (48) = InlMark <void> [5612] v42
      • v216 (+113) = Leq8U <bool> v214 v103 (~R0[bool])
    • If v216b48 b47 (+48)
    • b43: ← b39
      • v206 (48) = NilCheck <void> v57 v42
      • v207 (48) = OffPtr <*[8]uint8> [0] v57
      • v209 (48) = IsInBounds <bool> v191 v95
    • If v209b42 b45 (likely) (48)
    • b45: ← b43
      • v211 (48) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v211 (48)
    • b47: ← b42
      • v233 (+54) = NilCheck <void> v794 v42
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v794
      • v235 (54) = Load <unsafe.Pointer> v234 v42
      • v237 (54) = NilCheck <void> v6 v42
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v6
      • v239 (54) = Load <unsafe.Pointer> v238 v42
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b55 b53 (54)
    • b48: ← b42 b39
      • v221 (+49) = NilCheck <void> v57 v42
      • v222 (49) = OffPtr <*[8]uint8> [0] v57
      • v224 (49) = IsInBounds <bool> v191 v95
    • If v224b51 b52 (likely) (49)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b48
      • v227 (49) = PtrIndex <*uint8> v222 v191
      • v229 (49) = Load <uint8> v227 v42
      • v230 (49) = Eq8 <bool> v229 v36
    • If v230b50 b49 (49)
    • b52: ← b48
      • v226 (49) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v226 (49)
    • b53: ← b47
      • v261 (+58) = NilCheck <void> v6 v42
      • v262 (58) = OffPtr <*unsafe.Pointer> [0] v6
      • v263 (58) = Load <unsafe.Pointer> v262 v42
      • v266 (58) = NilCheck <void> v794 v42
      • v267 (58) = OffPtr <*unsafe.Pointer> [0] v794
      • v268 (58) = Load <unsafe.Pointer> v267 v42
      • v270 (58) = NilCheck <void> v263 v42
      • v272 (58) = PtrIndex <*byte> v263 v20
      • v273 (58) = Load <byte> v272 v42
      • v275 (58) = ZeroExt8to32 <uint32> v273
      • v276 (58) = NilCheck <void> v263 v42
      • v278 (58) = PtrIndex <*byte> v263 v277
      • v279 (58) = Load <byte> v278 v42
      • v281 (58) = ZeroExt8to32 <uint32> v279
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v285 (58) = NilCheck <void> v263 v42
      • v287 (58) = PtrIndex <*byte> v263 v286
      • v288 (58) = Load <byte> v287 v42
      • v290 (58) = ZeroExt8to32 <uint32> v288
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v294 (58) = NilCheck <void> v263 v42
      • v296 (58) = PtrIndex <*byte> v263 v295
      • v297 (58) = Load <byte> v296 v42
      • v299 (58) = ZeroExt8to32 <uint32> v297
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v302 (58) = Or32 <uint32> v293 v301
      • v303 (58) = NilCheck <void> v268 v42
      • v304 (58) = PtrIndex <*byte> v268 v20
      • v305 (58) = Load <byte> v304 v42
      • v307 (58) = ZeroExt8to32 <uint32> v305
      • v308 (58) = NilCheck <void> v268 v42
      • v309 (58) = PtrIndex <*byte> v268 v277
      • v310 (58) = Load <byte> v309 v42
      • v312 (58) = ZeroExt8to32 <uint32> v310
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v315 (58) = NilCheck <void> v268 v42
      • v316 (58) = PtrIndex <*byte> v268 v286
      • v317 (58) = Load <byte> v316 v42
      • v319 (58) = ZeroExt8to32 <uint32> v317
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v322 (58) = NilCheck <void> v268 v42
      • v323 (58) = PtrIndex <*byte> v268 v295
      • v324 (58) = Load <byte> v323 v42
      • v326 (58) = ZeroExt8to32 <uint32> v324
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v328 (58) = Or32 <uint32> v321 v327
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = NilCheck <void> v8 v42
      • v247 (55) = OffPtr <*uint8> [81] v8
      • v248 (55) = Load <uint8> v247 v42
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v191 v249
      • v251 (55) = Add64 <uintptr> v148 v250 (x[uintptr])
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v254 (18) = Add64 <uintptr> v253 v251
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v332 (+62) = NilCheck <void> v6 v42
      • v333 (62) = OffPtr <*unsafe.Pointer> [0] v6
      • v334 (62) = Load <unsafe.Pointer> v333 v42 (p[unsafe.Pointer])
      • v335 (62) = NilCheck <void> v6 v42
      • v336 (62) = OffPtr <*int> [8] v6
      • v337 (62) = Load <int> v336 v42
      • v340 (62) = Sub64 <uintptr> v337 v339 (x[uintptr])
      • v341 (62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v334 v42
      • v343 (18) = Add64 <uintptr> v342 v340
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v347 (+62) = NilCheck <void> v794 v42
      • v348 (62) = OffPtr <*unsafe.Pointer> [0] v794
      • v349 (62) = Load <unsafe.Pointer> v348 v42 (p[unsafe.Pointer])
      • v351 (62) = NilCheck <void> v6 v42
      • v352 (62) = OffPtr <*int> [8] v6
      • v353 (62) = Load <int> v352 v42
      • v355 (62) = Sub64 <uintptr> v353 v339 (x[uintptr])
      • v356 (62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v349 v42
      • v358 (18) = Add64 <uintptr> v357 v355
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = NilCheck <void> v344 v42
      • v366 (62) = PtrIndex <*byte> v344 v20
      • v367 (62) = Load <byte> v366 v42
      • v369 (62) = ZeroExt8to32 <uint32> v367
      • v370 (62) = NilCheck <void> v344 v42
      • v371 (62) = PtrIndex <*byte> v344 v277
      • v372 (62) = Load <byte> v371 v42
      • v374 (62) = ZeroExt8to32 <uint32> v372
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v377 (62) = NilCheck <void> v344 v42
      • v378 (62) = PtrIndex <*byte> v344 v286
      • v379 (62) = Load <byte> v378 v42
      • v381 (62) = ZeroExt8to32 <uint32> v379
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v376 v382
      • v384 (62) = NilCheck <void> v344 v42
      • v385 (62) = PtrIndex <*byte> v344 v295
      • v386 (62) = Load <byte> v385 v42
      • v388 (62) = ZeroExt8to32 <uint32> v386
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v390 (62) = Or32 <uint32> v383 v389
      • v391 (62) = NilCheck <void> v359 v42
      • v392 (62) = PtrIndex <*byte> v359 v20
      • v393 (62) = Load <byte> v392 v42
      • v395 (62) = ZeroExt8to32 <uint32> v393
      • v396 (62) = NilCheck <void> v359 v42
      • v397 (62) = PtrIndex <*byte> v359 v277
      • v398 (62) = Load <byte> v397 v42
      • v400 (62) = ZeroExt8to32 <uint32> v398
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v403 (62) = NilCheck <void> v359 v42
      • v404 (62) = PtrIndex <*byte> v359 v286
      • v405 (62) = Load <byte> v404 v42
      • v407 (62) = ZeroExt8to32 <uint32> v405
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v402 v408
      • v410 (62) = NilCheck <void> v359 v42
      • v411 (62) = PtrIndex <*byte> v359 v295
      • v412 (62) = Load <byte> v411 v42
      • v414 (62) = ZeroExt8to32 <uint32> v412
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v416 (62) = Or32 <uint32> v409 v415
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v419 (+65) = Neq64 <bool> v789 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v424 (+18) = Convert <uintptr> v794 v42
      • v425 (18) = Add64 <uintptr> v424 v166
      • v426 (18) = Convert <unsafe.Pointer> v425 v42 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v428 (+46) = Add64 <uintptr> v191 v173 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (+77) = PtrIndex <*byte> v479 v20
      • v482 (77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v436 (+72) = Mul64 <uintptr> v789 v435
      • v437 (72) = Mul64 <uintptr> v436 v69
      • v438 (72) = Add64 <uintptr> v69 v437 (x[uintptr])
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v442 (18) = Add64 <uintptr> v441 v438
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v447 (+73) = NilCheck <void> v443 v42
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v443
      • v449 (73) = Load <unsafe.Pointer> v448 v42
      • v451 (73) = NilCheck <void> v6 v42
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v6
      • v453 (73) = Load <unsafe.Pointer> v452 v42
      • v454 (73) = NilCheck <void> v6 v42
      • v455 (73) = OffPtr <*int> [8] v6
      • v456 (73) = Load <int> v455 v42
      • v458 (73) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v456 v42
      • v459 (73) = SelectN <mem> [1] v458
      • v460 (73) = SelectN <bool> [0] v458
    • If v460b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = NilCheck <void> v8 v459
      • v467 (74) = OffPtr <*uint8> [81] v8
      • v468 (74) = Load <uint8> v467 v459
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v789 v469
      • v471 (74) = Add64 <uintptr> v148 v470 (x[uintptr])
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v474 (18) = Add64 <uintptr> v473 v471
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v486 (+80) = InlMark <void> [5618] v42
      • v487 (+221) = Convert <uintptr> v6 v42 (x[uintptr])
      • v488 (+222) = Xor64 <uintptr> v487 v75
      • v489 (222) = Convert <unsafe.Pointer> v488 v42 (~R0[unsafe.Pointer])
      • v492 (+80) = NilCheck <void> v9 v42
      • v493 (80) = OffPtr <*uint32> [12] v9
      • v494 (80) = Load <uint32> v493 v42
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v497 (80) = NilCheck <void> v8 v42
      • v498 (80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v8
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v42
      • v501 (80) = Load <uintptr> v499 v42
      • v502 (80) = ClosureLECall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v489 v495 v42
      • v503 (80) = SelectN <mem> [1] v502
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v505 (+81) = NilCheck <void> v9 v503
      • v506 (81) = OffPtr <*uint8> [9] v9
      • v507 (81) = Load <uint8> v506 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (+187) = And8 <uint8> v507 v510
      • v512 (187) = Lsh64x8 <uintptr> [false] v173 v511 (~R0[uintptr])
      • v514 (+192) = Sub64 <uintptr> v512 v173 (m[uintptr], ~R0[uintptr])
      • v518 (+82) = NilCheck <void> v9 v503
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v9
      • v520 (82) = Load <unsafe.Pointer> v519 v503 (p[unsafe.Pointer])
      • v522 (82) = And64 <uintptr> v504 v514
      • v524 (82) = NilCheck <void> v8 v503
      • v525 (82) = OffPtr <*uint16> [82] v8
      • v526 (82) = Load <uint16> v525 v503
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v529 (82) = InlMark <void> [5620] v503
      • v530 (+18) = Convert <uintptr> v520 v503
      • v531 (18) = Add64 <uintptr> v530 v528
      • v532 (18) = Convert <unsafe.Pointer> v531 v503 (~R0[unsafe.Pointer], b[*bmap])
      • v537 (+83) = NilCheck <void> v9 v503
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v9
      • v539 (83) = Load <unsafe.Pointer> v538 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v540 (83) = NeqPtr <bool> v539 v12
    • If v540b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v588 (+197) = Rsh64Ux64 <uintptr> [false] v504 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (+198) = Less8U <bool> v589 v579
    • If v590b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v544 (+1128) = NilCheck <void> v9 v503
      • v545 (1128) = OffPtr <*uint8> [8] v9
      • v546 (1128) = Load <uint8> v545 v503
      • v548 (1128) = And8 <uint8> v546 v547
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • If v549b81 b80 (+84)
    • b80: ← b78
      • v553 (+86) = Rsh64Ux64 <uintptr> [false] v514 v552 (m[uintptr])
    • Plainb81 (86)
    • b81: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v553 (m[uintptr])
      • v557 (+88) = And64 <uintptr> v504 v556
      • v560 (88) = NilCheck <void> v8 v503
      • v561 (88) = OffPtr <*uint16> [82] v8
      • v562 (88) = Load <uint16> v561 v503
      • v563 (88) = ZeroExt16to64 <uintptr> v562
      • v564 (88) = Mul64 <uintptr> v557 v563 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v566 (+18) = Convert <uintptr> v539 v503
      • v567 (18) = Add64 <uintptr> v566 v564
      • v568 (18) = Convert <unsafe.Pointer> v567 v503 (~R0[unsafe.Pointer], b[*bmap], b[*bmap], oldb[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v573 (+205) = NilCheck <void> v568 v503
      • v574 (205) = OffPtr <*[8]uint8> [0] v568
      • v575 (205) = PtrIndex <*uint8> v574 v20
      • v576 (205) = Load <uint8> v575 v503 (h[uint8])
      • v577 (+206) = Less8U <bool> v103 v576
    • If v577b84 b86 (206)
    • b84: ← b81
      • v580 (206) = Less8U <bool> v576 v579 (~R0[bool])
    • If v580b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84 b81
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = Add8 <uint8> v589 v579 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (~R0[uint8], top[uint8], top[uint8])
    • Plainb90 (+94)
    • b90: ← b89 b113
      • v595 (94) = Phi <*bmap> v756 v707 (p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap])
      • v753 (105) = Phi <mem> v503 v751
      • v597 (+94) = NeqPtr <bool> v595 v596
    • If v597b95 b93 (likely) (94)
    • b93: ← b90
      • v710 (+105) = PtrIndex <*byte> v709 v20
      • v712 (105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v753
      • v602 (+218) = InlMark <void> [5633] v753
      • v603 (+18) = Convert <uintptr> v595 v753
      • v604 (18) = Add64 <uintptr> v603 v69
      • v605 (18) = Convert <unsafe.Pointer> v604 v753 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v753 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (kptr[unsafe.Pointer], p[unsafe.Pointer], k[*stringStruct])
      • v609 (+95) = Less64U <bool> v608 v69
    • If v609b97 b113 (likely) (95)
    • b97: ← b96
      • v613 (+97) = NilCheck <void> v752 v751
      • v614 (97) = OffPtr <*int> [8] v752
      • v615 (97) = Load <int> v614 v751
      • v617 (97) = NilCheck <void> v6 v751
      • v618 (97) = OffPtr <*int> [8] v6
      • v619 (97) = Load <int> v618 v751
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b105 b101 (97)
    • b100: ← b101
      • v629 (97) = PtrIndex <*uint8> v624 v608
      • v631 (97) = Load <uint8> v629 v751
      • v633 (97) = Neq8 <bool> v631 v593
    • If v633b105 b104 (97)
    • b101: ← b97
      • v623 (97) = NilCheck <void> v595 v751
      • v624 (97) = OffPtr <*[8]uint8> [0] v595
      • v626 (97) = IsInBounds <bool> v608 v95
    • If v626b100 b103 (likely) (97)
    • b103: ← b101
      • v628 (97) = PanicBounds <mem> [1] v608 v95 v751
    • Exit v628 (97)
    • b104: ← b100
      • v637 (+100) = NilCheck <void> v752 v751
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v639 (100) = Load <unsafe.Pointer> v638 v751
      • v641 (100) = NilCheck <void> v6 v751
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v643 (100) = Load <unsafe.Pointer> v642 v751
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v647 (100) = NilCheck <void> v752 v751
      • v648 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v649 (100) = Load <unsafe.Pointer> v648 v751
      • v651 (100) = NilCheck <void> v6 v751
      • v652 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v653 (100) = Load <unsafe.Pointer> v652 v751
      • v654 (100) = NilCheck <void> v6 v751
      • v655 (100) = OffPtr <*int> [8] v6
      • v656 (100) = Load <int> v655 v751
      • v658 (100) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v649 v653 v656 v751
      • v659 (100) = SelectN <mem> [1] v658
      • v660 (100) = SelectN <bool> [0] v658
    • If v660b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v667 (+101) = NilCheck <void> v8 v704
      • v668 (101) = OffPtr <*uint8> [81] v8
      • v669 (101) = Load <uint8> v668 v704
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v608 v670
      • v672 (101) = Add64 <uintptr> v148 v671 (x[uintptr])
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v595 v704
      • v675 (18) = Add64 <uintptr> v674 v672
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v683 (+18) = Convert <uintptr> v752 v681
      • v684 (18) = Add64 <uintptr> v683 v166
      • v685 (18) = Convert <unsafe.Pointer> v684 v681 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v687 (+95) = Add64 <uintptr> v608 v173 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v694 (+210) = NilCheck <void> v8 v751
      • v695 (210) = OffPtr <*uint16> [82] v8
      • v696 (210) = Load <uint16> v695 v751
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v698 (210) = Sub64 <uintptr> v697 v69 (x[uintptr])
      • v699 (210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v595 v751
      • v701 (18) = Add64 <uintptr> v700 v698
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = NilCheck <void> v702 v751
      • v707 (210) = Load <*bmap> v702 v751 (~R0[*bmap], b[*bmap])
    • Plainb90 (+94)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v157
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v251
  • name ~R0[unsafe.Pointer]: v255
  • name p[unsafe.Pointer]: v334
  • name x[uintptr]: v340
  • name ~R0[unsafe.Pointer]: v344
  • name p[unsafe.Pointer]: v349
  • name x[uintptr]: v355
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v438
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v471
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name x[uintptr]: v487
  • name ~R0[unsafe.Pointer]: v489
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v595 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name ~R0[bool]: v580
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v672
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v698
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • opt [216615 ns]

    b1 b1 If b2 b2 If b1->b2 0 b5 b5 Ret b1->b5 1 b2->b5 0 b4 b4 If b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 If b4->b8 1 b7->b8 0 b10 b10 If b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 If b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 If b14->b15 0 b16 b16 If b15->b16 0 b18 b18 Ret b15->b18 1 b25 b25 If b16->b25 0 b20 b20 If b16->b20 1 b19 b19 If b19->b25 0 b24 b24 If b19->b24 1 b20->b19 0 b22 b22 Exit b20->b22 1 b34 b34 Ret b24->b34 0 b30 b30 If b24->b30 1 b28 b28 If b25->b28 0 b29 b29 Exit b25->b29 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 If b37->b38 0 b39 b39 If b38->b39 0 b41 b41 If b38->b41 1 b48 b48 If b39->b48 0 b43 b43 If b39->b43 1 b68 b68 If b41->b68 0 b66 b66 Ret b41->b66 1 b42 b42 If b42->b48 0 b47 b47 If b42->b47 1 b43->b42 0 b45 b45 Exit b43->b45 1 b55 b55 Ret b47->b55 0 b53 b53 If b47->b53 1 b51 b51 If b48->b51 0 b52 b52 Exit b48->b52 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 If b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 If b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 If b75->b78 0 b76 b76 If b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b81 b81 If b78->b81 0 b80 b80 Plain b78->b80 1 b80->b81 0 b84 b84 If b81->b84 0 b86 b86 Plain b81->b86 1 b85 b85 Plain b84->b85 0 b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b90 b90 If b89->b90 0 b95 b95 Plain b90->b95 0 b93 b93 Ret b90->b93 1 b96 b96 If b95->b96 0 b97 b97 If b96->b97 0 b113 b113 Plain b96->b113 1 b105 b105 Plain b97->b105 0 b101 b101 If b97->b101 1 b100 b100 If b100->b105 0 b104 b104 If b100->b104 1 b101->b100 0 b103 b103 Exit b101->b103 1 b110 b110 Ret b104->b110 0 b106 b106 If b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (p[unsafe.Pointer], sp[*string], key[*stringStruct], ~R0[*stringStruct])
      • v8 (13) = Arg <*abi.MapType> {t} (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = Arg <*hmap> {h} (h[*hmap], h[*hmap])
      • v10 (13) = Arg <string> {ky}
      • v11 (+13) = Store <mem> {string} v6 v10 v1
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (x[uintptr], x[uintptr], keymaybe[uintptr], x[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v95 (?) = Const64 <int> [8]
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v173 (?) = Const64 <uintptr> [1]
      • v176 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v282 (?) = Const64 <uint> [8]
      • v291 (?) = Const64 <uint> [16]
      • v300 (?) = Const64 <uint> [24]
      • v479 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v709 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v717 (+18) = IsNonNil <bool> v9
      • v634 (?) = SB <uintptr>
      • v581 (?) = Const64 <int> [33]
      • v661 (?) = Addr <*uint8> {go:string."concurrent map read and map write"} v634
      • v38 (?) = StringMake <string> v661 v581
    • If v717b2 b5 (18)
    • b2: ← b1
      • v17 (18) = NilCheck <void> v9 v11
      • v18 (18) = OffPtr <*int> [0] v9
      • v19 (18) = Load <int> v18 v11
      • v21 (18) = Eq64 <bool> v19 v20
    • If v21b5 b4 (18)
    • b4: ← b2
      • v31 (+21) = NilCheck <void> v9 v11
      • v32 (21) = OffPtr <*uint8> [8] v9
      • v33 (21) = Load <uint8> v32 v11
      • v35 (21) = And8 <uint8> v33 v34
      • v37 (21) = Neq8 <bool> v35 v36
    • If v37b7 b8 (21)
    • b5: ← b2 b1
      • v25 (19) = OffPtr <*byte> [0] v23
      • v27 (+19) = MakeResult <unsafe.Pointer,mem> v25 v11
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = StaticLECall <mem> {AuxCall{runtime.fatal}} [16] v38 v11
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v11 v41
      • v49 (+25) = NilCheck <void> v9 v42
      • v50 (25) = OffPtr <*uint8> [9] v9
      • v51 (25) = Load <uint8> v50 v42
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v55 (+27) = NilCheck <void> v9 v42
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v9
      • v57 (27) = Load <unsafe.Pointer> v56 v42 (p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap])
      • v60 (+28) = NilCheck <void> v6 v42
      • v61 (28) = OffPtr <*int> [8] v6
      • v62 (28) = Load <int> v61 v42
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v73 (+18) = OffPtr <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v78 (+30) = Less64U <bool> v77 v69
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v82 (+32) = NilCheck <void> v816 v810
      • v83 (32) = OffPtr <*int> [8] v816
      • v84 (32) = Load <int> v83 v810
      • v86 (32) = NilCheck <void> v6 v810
      • v87 (32) = OffPtr <*int> [8] v6
      • v88 (32) = Load <int> v87 v810
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b25 b20 (32)
    • b18: ← b15 b27
      • v177 (42) = OffPtr <*byte> [0] v176
      • v179 (+42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b20
      • v99 (32) = AddPtr <*uint8> v93 v77
      • v101 (32) = Load <uint8> v99 v810 (x[uint8])
      • v102 (32) = InlMark <void> [5608] v810
      • v104 (+113) = Leq8U <bool> v101 v103 (~R0[bool])
    • If v104b25 b24 (+32)
    • b20: ← b16
      • v92 (32) = NilCheck <void> v57 v810
      • v93 (32) = OffPtr <*[8]uint8> [0] v57
      • v96 (32) = IsInBounds <bool> v77 v95
    • If v96b19 b22 (likely) (32)
    • b22: ← b20
      • v98 (32) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v98 (32)
    • b24: ← b19
      • v121 (+38) = NilCheck <void> v816 v810
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v123 (38) = Load <unsafe.Pointer> v122 v810
      • v125 (38) = NilCheck <void> v6 v810
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v127 (38) = Load <unsafe.Pointer> v126 v810
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b34 b30 (38)
    • b25: ← b19 b16
      • v109 (+33) = NilCheck <void> v57 v810
      • v110 (33) = OffPtr <*[8]uint8> [0] v57
      • v112 (33) = IsInBounds <bool> v77 v95
    • If v112b28 b29 (likely) (33)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b25
      • v115 (33) = AddPtr <*uint8> v110 v77
      • v117 (33) = Load <uint8> v115 v810
      • v118 (33) = Eq8 <bool> v117 v36
    • If v118b27 b26 (33)
    • b29: ← b25
      • v114 (33) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v114 (33)
    • b30: ← b24
      • v131 (38) = NilCheck <void> v816 v810
      • v132 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v133 (38) = Load <unsafe.Pointer> v132 v810
      • v135 (38) = NilCheck <void> v6 v810
      • v136 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v137 (38) = Load <unsafe.Pointer> v136 v810
      • v138 (38) = NilCheck <void> v6 v810
      • v139 (38) = OffPtr <*int> [8] v6
      • v140 (38) = Load <int> v139 v810
      • v142 (38) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v133 v137 v140 v810
      • v143 (38) = SelectN <mem> [1] v142
      • v144 (38) = SelectN <bool> [0] v142
    • If v144b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v152 (+39) = NilCheck <void> v8 v703
      • v153 (39) = OffPtr <*uint8> [81] v8
      • v154 (39) = Load <uint8> v153 v703
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v77 v155
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v688 (18) = Add64 <uintptr> v156 v159
      • v160 (18) = Add64 <uintptr> v148 v688
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v171 (+18) = OffPtr <unsafe.Pointer> [16] v816 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v174 (+30) = Add64 <uintptr> v77 v173 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v188 (+18) = OffPtr <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (i[uintptr], keymaybe[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (p[unsafe.Pointer], kptr[unsafe.Pointer], k[*stringStruct])
      • v192 (+46) = Less64U <bool> v191 v69
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v196 (+48) = NilCheck <void> v794 v42
      • v197 (48) = OffPtr <*int> [8] v794
      • v198 (48) = Load <int> v197 v42
      • v200 (48) = NilCheck <void> v6 v42
      • v201 (48) = OffPtr <*int> [8] v6
      • v202 (48) = Load <int> v201 v42
      • v203 (48) = Neq64 <bool> v198 v202
    • If v203b48 b43 (48)
    • b41: ← b38 b50
      • v431 (+71) = Neq64 <bool> v789 v69
    • If v431b68 b66 (71)
    • b42: ← b43
      • v212 (48) = AddPtr <*uint8> v207 v191
      • v214 (48) = Load <uint8> v212 v42 (x[uint8])
      • v215 (48) = InlMark <void> [5612] v42
      • v216 (+113) = Leq8U <bool> v214 v103 (~R0[bool])
    • If v216b48 b47 (+48)
    • b43: ← b39
      • v206 (48) = NilCheck <void> v57 v42
      • v207 (48) = OffPtr <*[8]uint8> [0] v57
      • v209 (48) = IsInBounds <bool> v191 v95
    • If v209b42 b45 (likely) (48)
    • b45: ← b43
      • v211 (48) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v211 (48)
    • b47: ← b42
      • v233 (+54) = NilCheck <void> v794 v42
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v794
      • v235 (54) = Load <unsafe.Pointer> v234 v42
      • v237 (54) = NilCheck <void> v6 v42
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v6
      • v239 (54) = Load <unsafe.Pointer> v238 v42
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b55 b53 (54)
    • b48: ← b42 b39
      • v221 (+49) = NilCheck <void> v57 v42
      • v222 (49) = OffPtr <*[8]uint8> [0] v57
      • v224 (49) = IsInBounds <bool> v191 v95
    • If v224b51 b52 (likely) (49)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b48
      • v227 (49) = AddPtr <*uint8> v222 v191
      • v229 (49) = Load <uint8> v227 v42
      • v230 (49) = Eq8 <bool> v229 v36
    • If v230b50 b49 (49)
    • b52: ← b48
      • v226 (49) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v226 (49)
    • b53: ← b47
      • v261 (+58) = NilCheck <void> v6 v42
      • v262 (58) = OffPtr <*unsafe.Pointer> [0] v6
      • v263 (58) = Load <unsafe.Pointer> v262 v42
      • v266 (58) = NilCheck <void> v794 v42
      • v267 (58) = OffPtr <*unsafe.Pointer> [0] v794
      • v268 (58) = Load <unsafe.Pointer> v267 v42
      • v270 (58) = NilCheck <void> v263 v42
      • v272 (58) = OffPtr <*byte> [0] v263
      • v273 (58) = Load <byte> v272 v42
      • v275 (58) = ZeroExt8to32 <uint32> v273
      • v276 (58) = NilCheck <void> v263 v42
      • v278 (58) = OffPtr <*byte> [1] v263
      • v279 (58) = Load <byte> v278 v42
      • v281 (58) = ZeroExt8to32 <uint32> v279
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v285 (58) = NilCheck <void> v263 v42
      • v287 (58) = OffPtr <*byte> [2] v263
      • v288 (58) = Load <byte> v287 v42
      • v290 (58) = ZeroExt8to32 <uint32> v288
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v294 (58) = NilCheck <void> v263 v42
      • v296 (58) = OffPtr <*byte> [3] v263
      • v297 (58) = Load <byte> v296 v42
      • v299 (58) = ZeroExt8to32 <uint32> v297
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v302 (58) = Or32 <uint32> v293 v301
      • v303 (58) = NilCheck <void> v268 v42
      • v304 (58) = OffPtr <*byte> [0] v268
      • v305 (58) = Load <byte> v304 v42
      • v307 (58) = ZeroExt8to32 <uint32> v305
      • v308 (58) = NilCheck <void> v268 v42
      • v309 (58) = OffPtr <*byte> [1] v268
      • v310 (58) = Load <byte> v309 v42
      • v312 (58) = ZeroExt8to32 <uint32> v310
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v315 (58) = NilCheck <void> v268 v42
      • v316 (58) = OffPtr <*byte> [2] v268
      • v317 (58) = Load <byte> v316 v42
      • v319 (58) = ZeroExt8to32 <uint32> v317
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v322 (58) = NilCheck <void> v268 v42
      • v323 (58) = OffPtr <*byte> [3] v268
      • v324 (58) = Load <byte> v323 v42
      • v326 (58) = ZeroExt8to32 <uint32> v324
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v328 (58) = Or32 <uint32> v321 v327
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = NilCheck <void> v8 v42
      • v247 (55) = OffPtr <*uint8> [81] v8
      • v248 (55) = Load <uint8> v247 v42
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v191 v249
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v635 (18) = Add64 <uintptr> v250 v253
      • v254 (18) = Add64 <uintptr> v148 v635
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v332 (+62) = NilCheck <void> v6 v42
      • v333 (62) = OffPtr <*unsafe.Pointer> [0] v6
      • v334 (62) = Load <unsafe.Pointer> v333 v42 (p[unsafe.Pointer])
      • v335 (62) = NilCheck <void> v6 v42
      • v336 (62) = OffPtr <*int> [8] v6
      • v337 (62) = Load <int> v336 v42
      • v341 (62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v334 v42
      • v347 (+62) = NilCheck <void> v794 v42
      • v348 (62) = OffPtr <*unsafe.Pointer> [0] v794
      • v349 (62) = Load <unsafe.Pointer> v348 v42 (p[unsafe.Pointer])
      • v351 (62) = NilCheck <void> v6 v42
      • v352 (62) = OffPtr <*int> [8] v6
      • v353 (62) = Load <int> v352 v42
      • v356 (62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v349 v42
      • v627 (62) = Const64 <uintptr> [-4]
      • v632 (18) = Add64 <uintptr> v337 v342
      • v630 (62) = Const64 <uintptr> [-4]
      • v625 (18) = Add64 <uintptr> v353 v357
      • v343 (18) = Add64 <uintptr> v627 v632
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v358 (18) = Add64 <uintptr> v630 v625
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = NilCheck <void> v344 v42
      • v366 (62) = OffPtr <*byte> [0] v344
      • v367 (62) = Load <byte> v366 v42
      • v369 (62) = ZeroExt8to32 <uint32> v367
      • v370 (62) = NilCheck <void> v344 v42
      • v371 (62) = OffPtr <*byte> [1] v344
      • v372 (62) = Load <byte> v371 v42
      • v374 (62) = ZeroExt8to32 <uint32> v372
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v377 (62) = NilCheck <void> v344 v42
      • v378 (62) = OffPtr <*byte> [2] v344
      • v379 (62) = Load <byte> v378 v42
      • v381 (62) = ZeroExt8to32 <uint32> v379
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v376 v382
      • v384 (62) = NilCheck <void> v344 v42
      • v385 (62) = OffPtr <*byte> [3] v344
      • v386 (62) = Load <byte> v385 v42
      • v388 (62) = ZeroExt8to32 <uint32> v386
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v390 (62) = Or32 <uint32> v383 v389
      • v391 (62) = NilCheck <void> v359 v42
      • v392 (62) = OffPtr <*byte> [0] v359
      • v393 (62) = Load <byte> v392 v42
      • v395 (62) = ZeroExt8to32 <uint32> v393
      • v396 (62) = NilCheck <void> v359 v42
      • v397 (62) = OffPtr <*byte> [1] v359
      • v398 (62) = Load <byte> v397 v42
      • v400 (62) = ZeroExt8to32 <uint32> v398
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v403 (62) = NilCheck <void> v359 v42
      • v404 (62) = OffPtr <*byte> [2] v359
      • v405 (62) = Load <byte> v404 v42
      • v407 (62) = ZeroExt8to32 <uint32> v405
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v402 v408
      • v410 (62) = NilCheck <void> v359 v42
      • v411 (62) = OffPtr <*byte> [3] v359
      • v412 (62) = Load <byte> v411 v42
      • v414 (62) = ZeroExt8to32 <uint32> v412
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v416 (62) = Or32 <uint32> v409 v415
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v419 (+65) = Neq64 <bool> v789 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v426 (+18) = OffPtr <unsafe.Pointer> [16] v794 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v428 (+46) = Add64 <uintptr> v191 v173 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (77) = OffPtr <*byte> [0] v479
      • v482 (+77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v451 (73) = NilCheck <void> v6 v42
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v6
      • v453 (73) = Load <unsafe.Pointer> v452 v42
      • v454 (73) = NilCheck <void> v6 v42
      • v455 (73) = OffPtr <*int> [8] v6
      • v456 (73) = Load <int> v455 v42
      • v601 (+72) = Const64 <uintptr> [4]
      • v437 (+72) = Lsh64x64 <uintptr> [false] v789 v601
      • v741 (18) = Add64 <uintptr> v437 v441
      • v442 (18) = Add64 <uintptr> v69 v741
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v447 (+73) = NilCheck <void> v443 v42
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v443
      • v449 (73) = Load <unsafe.Pointer> v448 v42
      • v458 (73) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v456 v42
      • v459 (73) = SelectN <mem> [1] v458
      • v460 (73) = SelectN <bool> [0] v458
    • If v460b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = NilCheck <void> v8 v459
      • v467 (74) = OffPtr <*uint8> [81] v8
      • v468 (74) = Load <uint8> v467 v459
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v789 v469
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v734 (18) = Add64 <uintptr> v470 v473
      • v474 (18) = Add64 <uintptr> v148 v734
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v486 (+80) = InlMark <void> [5618] v42
      • v492 (+80) = NilCheck <void> v9 v42
      • v493 (80) = OffPtr <*uint32> [12] v9
      • v494 (80) = Load <uint32> v493 v42
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v497 (80) = NilCheck <void> v8 v42
      • v498 (80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v8
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v42
      • v501 (80) = Load <uintptr> v499 v42
      • v502 (80) = ClosureLECall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v6 v495 v42
      • v503 (80) = SelectN <mem> [1] v502
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v505 (+81) = NilCheck <void> v9 v503
      • v506 (81) = OffPtr <*uint8> [9] v9
      • v507 (81) = Load <uint8> v506 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (+187) = And8 <uint8> v507 v510
      • v512 (187) = Lsh64x8 <uintptr> [false] v173 v511 (~R0[uintptr])
      • v518 (+82) = NilCheck <void> v9 v503
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v9
      • v520 (82) = Load <unsafe.Pointer> v519 v503 (p[unsafe.Pointer])
      • v524 (82) = NilCheck <void> v8 v503
      • v525 (82) = OffPtr <*uint16> [82] v8
      • v526 (82) = Load <uint16> v525 v503
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v529 (82) = InlMark <void> [5620] v503
      • v537 (+83) = NilCheck <void> v9 v503
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v9
      • v539 (83) = Load <unsafe.Pointer> v538 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v540 (83) = IsNonNil <bool> v539
      • v729 (+192) = Const64 <uintptr> [-1]
      • v514 (+192) = Add64 <uintptr> v729 v512 (m[uintptr], ~R0[uintptr])
      • v522 (82) = And64 <uintptr> v504 v514
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v532 (+18) = AddPtr <unsafe.Pointer> v520 v528 (b[*bmap], ~R0[unsafe.Pointer])
    • If v540b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v588 (+197) = Rsh64Ux64 <uintptr> [false] v504 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (+198) = Less8U <bool> v589 v579
    • If v590b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v544 (+1128) = NilCheck <void> v9 v503
      • v545 (1128) = OffPtr <*uint8> [8] v9
      • v546 (1128) = Load <uint8> v545 v503
      • v548 (1128) = And8 <uint8> v546 v547
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • If v549b81 b80 (+84)
    • b80: ← b78
      • v553 (+86) = Rsh64Ux64 <uintptr> [false] v514 v552 (m[uintptr])
    • Plainb81 (86)
    • b81: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v553 (m[uintptr])
      • v557 (+88) = And64 <uintptr> v504 v556
      • v560 (88) = NilCheck <void> v8 v503
      • v561 (88) = OffPtr <*uint16> [82] v8
      • v562 (88) = Load <uint16> v561 v503
      • v563 (88) = ZeroExt16to64 <uintptr> v562
      • v564 (88) = Mul64 <uintptr> v557 v563 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v568 (+18) = AddPtr <unsafe.Pointer> v539 v564 (oldb[*bmap], ~R0[unsafe.Pointer], b[*bmap], b[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v573 (+205) = NilCheck <void> v568 v503
      • v575 (205) = OffPtr <*uint8> [0] v568
      • v576 (205) = Load <uint8> v575 v503 (h[uint8])
      • v577 (+206) = Less8U <bool> v103 v576
    • If v577b84 b86 (206)
    • b84: ← b81
      • v580 (206) = Less8U <bool> v576 v579 (~R0[bool])
    • If v580b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84 b81
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = Add8 <uint8> v589 v579 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (~R0[uint8], top[uint8], top[uint8])
    • Plainb90 (+94)
    • b90: ← b89 b113
      • v595 (94) = Phi <*bmap> v756 v707 (b[*bmap], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer])
      • v753 (105) = Phi <mem> v503 v751
      • v597 (+94) = IsNonNil <bool> v595
    • If v597b95 b93 (likely) (94)
    • b93: ← b90
      • v710 (105) = OffPtr <*byte> [0] v709
      • v712 (+105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v753
      • v602 (+218) = InlMark <void> [5633] v753
      • v605 (+18) = OffPtr <unsafe.Pointer> [8] v595 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v753 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v609 (+95) = Less64U <bool> v608 v69
    • If v609b97 b113 (likely) (95)
    • b97: ← b96
      • v613 (+97) = NilCheck <void> v752 v751
      • v614 (97) = OffPtr <*int> [8] v752
      • v615 (97) = Load <int> v614 v751
      • v617 (97) = NilCheck <void> v6 v751
      • v618 (97) = OffPtr <*int> [8] v6
      • v619 (97) = Load <int> v618 v751
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b105 b101 (97)
    • b100: ← b101
      • v629 (97) = AddPtr <*uint8> v624 v608
      • v631 (97) = Load <uint8> v629 v751
      • v633 (97) = Neq8 <bool> v631 v593
    • If v633b105 b104 (97)
    • b101: ← b97
      • v623 (97) = NilCheck <void> v595 v751
      • v624 (97) = OffPtr <*[8]uint8> [0] v595
      • v626 (97) = IsInBounds <bool> v608 v95
    • If v626b100 b103 (likely) (97)
    • b103: ← b101
      • v628 (97) = PanicBounds <mem> [1] v608 v95 v751
    • Exit v628 (97)
    • b104: ← b100
      • v637 (+100) = NilCheck <void> v752 v751
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v639 (100) = Load <unsafe.Pointer> v638 v751
      • v641 (100) = NilCheck <void> v6 v751
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v643 (100) = Load <unsafe.Pointer> v642 v751
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v647 (100) = NilCheck <void> v752 v751
      • v648 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v649 (100) = Load <unsafe.Pointer> v648 v751
      • v651 (100) = NilCheck <void> v6 v751
      • v652 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v653 (100) = Load <unsafe.Pointer> v652 v751
      • v654 (100) = NilCheck <void> v6 v751
      • v655 (100) = OffPtr <*int> [8] v6
      • v656 (100) = Load <int> v655 v751
      • v658 (100) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v649 v653 v656 v751
      • v659 (100) = SelectN <mem> [1] v658
      • v660 (100) = SelectN <bool> [0] v658
    • If v660b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v667 (+101) = NilCheck <void> v8 v704
      • v668 (101) = OffPtr <*uint8> [81] v8
      • v669 (101) = Load <uint8> v668 v704
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v608 v670
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v595 v704
      • v691 (18) = Add64 <uintptr> v671 v674
      • v675 (18) = Add64 <uintptr> v148 v691
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v685 (+18) = OffPtr <unsafe.Pointer> [16] v752 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v687 (+95) = Add64 <uintptr> v608 v173 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v694 (+210) = NilCheck <void> v8 v751
      • v695 (210) = OffPtr <*uint16> [82] v8
      • v696 (210) = Load <uint16> v695 v751
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v699 (210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v595 v751
      • v690 (210) = Const64 <uintptr> [-8]
      • v689 (18) = Add64 <uintptr> v697 v700
      • v701 (18) = Add64 <uintptr> v690 v689
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = NilCheck <void> v702 v751
      • v707 (210) = Load <*bmap> v702 v751 (b[*bmap], ~R0[*bmap])
    • Plainb90 (+94)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v157
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v251
  • name ~R0[unsafe.Pointer]: v255
  • name p[unsafe.Pointer]: v334
  • name x[uintptr]: v340
  • name ~R0[unsafe.Pointer]: v344
  • name p[unsafe.Pointer]: v349
  • name x[uintptr]: v355
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v438
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v471
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name x[uintptr]: v487
  • name ~R0[unsafe.Pointer]: v489
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v595 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name ~R0[bool]: v580
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v672
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v698
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • zero arg cse [37865 ns]

    b1 b1 If b2 b2 If b1->b2 0 b5 b5 Ret b1->b5 1 b2->b5 0 b4 b4 If b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 If b4->b8 1 b7->b8 0 b10 b10 If b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 If b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 If b14->b15 0 b16 b16 If b15->b16 0 b18 b18 Ret b15->b18 1 b25 b25 If b16->b25 0 b20 b20 If b16->b20 1 b19 b19 If b19->b25 0 b24 b24 If b19->b24 1 b20->b19 0 b22 b22 Exit b20->b22 1 b34 b34 Ret b24->b34 0 b30 b30 If b24->b30 1 b28 b28 If b25->b28 0 b29 b29 Exit b25->b29 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 If b37->b38 0 b39 b39 If b38->b39 0 b41 b41 If b38->b41 1 b48 b48 If b39->b48 0 b43 b43 If b39->b43 1 b68 b68 If b41->b68 0 b66 b66 Ret b41->b66 1 b42 b42 If b42->b48 0 b47 b47 If b42->b47 1 b43->b42 0 b45 b45 Exit b43->b45 1 b55 b55 Ret b47->b55 0 b53 b53 If b47->b53 1 b51 b51 If b48->b51 0 b52 b52 Exit b48->b52 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 If b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 If b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 If b75->b78 0 b76 b76 If b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b81 b81 If b78->b81 0 b80 b80 Plain b78->b80 1 b80->b81 0 b84 b84 If b81->b84 0 b86 b86 Plain b81->b86 1 b85 b85 Plain b84->b85 0 b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b90 b90 If b89->b90 0 b95 b95 Plain b90->b95 0 b93 b93 Ret b90->b93 1 b96 b96 If b95->b96 0 b97 b97 If b96->b97 0 b113 b113 Plain b96->b113 1 b105 b105 Plain b97->b105 0 b101 b101 If b97->b101 1 b100 b100 If b100->b105 0 b104 b104 If b100->b104 1 b101->b100 0 b103 b103 Exit b101->b103 1 b110 b110 Ret b104->b110 0 b106 b106 If b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (~R0[*stringStruct], p[unsafe.Pointer], sp[*string], key[*stringStruct])
      • v8 (13) = Arg <*abi.MapType> {t} (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = Arg <*hmap> {h} (h[*hmap], h[*hmap])
      • v10 (13) = Arg <string> {ky}
      • v11 (+13) = Store <mem> {string} v6 v10 v1
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (x[uintptr], keymaybe[uintptr], x[uintptr], x[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v95 (?) = Const64 <int> [8]
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v173 (?) = Const64 <uintptr> [1]
      • v176 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v282 (?) = Const64 <uint> [8]
      • v291 (?) = Const64 <uint> [16]
      • v300 (?) = Const64 <uint> [24]
      • v479 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v709 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v717 (+18) = IsNonNil <bool> v9
      • v661 (?) = Addr <*uint8> {go:string."concurrent map read and map write"} v3
      • v634 (?) = SB <uintptr>
      • v581 (?) = Const64 <int> [33]
      • v627 (62) = Const64 <uintptr> [-4]
      • v601 (+72) = Const64 <uintptr> [4]
      • v729 (+192) = Const64 <uintptr> [-1]
      • v690 (210) = Const64 <uintptr> [-8]
      • v38 (?) = StringMake <string> v661 v581
    • If v717b2 b5 (18)
    • b2: ← b1
      • v17 (18) = NilCheck <void> v9 v11
      • v18 (18) = OffPtr <*int> [0] v9
      • v19 (18) = Load <int> v18 v11
      • v21 (18) = Eq64 <bool> v19 v20
    • If v21b5 b4 (18)
    • b4: ← b2
      • v31 (+21) = NilCheck <void> v9 v11
      • v32 (21) = OffPtr <*uint8> [8] v9
      • v33 (21) = Load <uint8> v32 v11
      • v35 (21) = And8 <uint8> v33 v34
      • v37 (21) = Neq8 <bool> v35 v36
    • If v37b7 b8 (21)
    • b5: ← b2 b1
      • v25 (19) = OffPtr <*byte> [0] v23
      • v27 (+19) = MakeResult <unsafe.Pointer,mem> v25 v11
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = StaticLECall <mem> {AuxCall{runtime.fatal}} [16] v38 v11
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v11 v41
      • v49 (+25) = NilCheck <void> v9 v42
      • v50 (25) = OffPtr <*uint8> [9] v9
      • v51 (25) = Load <uint8> v50 v42
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v55 (+27) = NilCheck <void> v9 v42
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v9
      • v57 (27) = Load <unsafe.Pointer> v56 v42 (p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer])
      • v60 (+28) = NilCheck <void> v6 v42
      • v61 (28) = OffPtr <*int> [8] v6
      • v62 (28) = Load <int> v61 v42
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v73 (+18) = OffPtr <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v78 (+30) = Less64U <bool> v77 v69
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v82 (+32) = NilCheck <void> v816 v810
      • v83 (32) = OffPtr <*int> [8] v816
      • v84 (32) = Load <int> v83 v810
      • v86 (32) = NilCheck <void> v6 v810
      • v87 (32) = OffPtr <*int> [8] v6
      • v88 (32) = Load <int> v87 v810
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b25 b20 (32)
    • b18: ← b15 b27
      • v177 (42) = OffPtr <*byte> [0] v176
      • v179 (+42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b20
      • v99 (32) = AddPtr <*uint8> v93 v77
      • v101 (32) = Load <uint8> v99 v810 (x[uint8])
      • v102 (32) = InlMark <void> [5608] v810
      • v104 (+113) = Leq8U <bool> v101 v103 (~R0[bool])
    • If v104b25 b24 (+32)
    • b20: ← b16
      • v92 (32) = NilCheck <void> v57 v810
      • v93 (32) = OffPtr <*[8]uint8> [0] v57
      • v96 (32) = IsInBounds <bool> v77 v95
    • If v96b19 b22 (likely) (32)
    • b22: ← b20
      • v98 (32) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v98 (32)
    • b24: ← b19
      • v121 (+38) = NilCheck <void> v816 v810
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v123 (38) = Load <unsafe.Pointer> v122 v810
      • v125 (38) = NilCheck <void> v6 v810
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v127 (38) = Load <unsafe.Pointer> v126 v810
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b34 b30 (38)
    • b25: ← b19 b16
      • v109 (+33) = NilCheck <void> v57 v810
      • v110 (33) = OffPtr <*[8]uint8> [0] v57
      • v112 (33) = IsInBounds <bool> v77 v95
    • If v112b28 b29 (likely) (33)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b25
      • v115 (33) = AddPtr <*uint8> v110 v77
      • v117 (33) = Load <uint8> v115 v810
      • v118 (33) = Eq8 <bool> v117 v36
    • If v118b27 b26 (33)
    • b29: ← b25
      • v114 (33) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v114 (33)
    • b30: ← b24
      • v131 (38) = NilCheck <void> v816 v810
      • v132 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v133 (38) = Load <unsafe.Pointer> v132 v810
      • v135 (38) = NilCheck <void> v6 v810
      • v136 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v137 (38) = Load <unsafe.Pointer> v136 v810
      • v138 (38) = NilCheck <void> v6 v810
      • v139 (38) = OffPtr <*int> [8] v6
      • v140 (38) = Load <int> v139 v810
      • v142 (38) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v133 v137 v140 v810
      • v143 (38) = SelectN <mem> [1] v142
      • v144 (38) = SelectN <bool> [0] v142
    • If v144b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v152 (+39) = NilCheck <void> v8 v703
      • v153 (39) = OffPtr <*uint8> [81] v8
      • v154 (39) = Load <uint8> v153 v703
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v77 v155
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v688 (18) = Add64 <uintptr> v156 v159
      • v160 (18) = Add64 <uintptr> v148 v688
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v171 (+18) = OffPtr <unsafe.Pointer> [16] v816 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v174 (+30) = Add64 <uintptr> v77 v173 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v188 (+18) = OffPtr <unsafe.Pointer> [8] v57 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (i[uintptr], keymaybe[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v192 (+46) = Less64U <bool> v191 v69
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v196 (+48) = NilCheck <void> v794 v42
      • v197 (48) = OffPtr <*int> [8] v794
      • v198 (48) = Load <int> v197 v42
      • v200 (48) = NilCheck <void> v6 v42
      • v201 (48) = OffPtr <*int> [8] v6
      • v202 (48) = Load <int> v201 v42
      • v203 (48) = Neq64 <bool> v198 v202
    • If v203b48 b43 (48)
    • b41: ← b38 b50
      • v431 (+71) = Neq64 <bool> v789 v69
    • If v431b68 b66 (71)
    • b42: ← b43
      • v212 (48) = AddPtr <*uint8> v207 v191
      • v214 (48) = Load <uint8> v212 v42 (x[uint8])
      • v215 (48) = InlMark <void> [5612] v42
      • v216 (+113) = Leq8U <bool> v214 v103 (~R0[bool])
    • If v216b48 b47 (+48)
    • b43: ← b39
      • v206 (48) = NilCheck <void> v57 v42
      • v207 (48) = OffPtr <*[8]uint8> [0] v57
      • v209 (48) = IsInBounds <bool> v191 v95
    • If v209b42 b45 (likely) (48)
    • b45: ← b43
      • v211 (48) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v211 (48)
    • b47: ← b42
      • v233 (+54) = NilCheck <void> v794 v42
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v794
      • v235 (54) = Load <unsafe.Pointer> v234 v42
      • v237 (54) = NilCheck <void> v6 v42
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v6
      • v239 (54) = Load <unsafe.Pointer> v238 v42
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b55 b53 (54)
    • b48: ← b42 b39
      • v221 (+49) = NilCheck <void> v57 v42
      • v222 (49) = OffPtr <*[8]uint8> [0] v57
      • v224 (49) = IsInBounds <bool> v191 v95
    • If v224b51 b52 (likely) (49)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b48
      • v227 (49) = AddPtr <*uint8> v222 v191
      • v229 (49) = Load <uint8> v227 v42
      • v230 (49) = Eq8 <bool> v229 v36
    • If v230b50 b49 (49)
    • b52: ← b48
      • v226 (49) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v226 (49)
    • b53: ← b47
      • v261 (+58) = NilCheck <void> v6 v42
      • v262 (58) = OffPtr <*unsafe.Pointer> [0] v6
      • v263 (58) = Load <unsafe.Pointer> v262 v42
      • v266 (58) = NilCheck <void> v794 v42
      • v267 (58) = OffPtr <*unsafe.Pointer> [0] v794
      • v268 (58) = Load <unsafe.Pointer> v267 v42
      • v270 (58) = NilCheck <void> v263 v42
      • v272 (58) = OffPtr <*byte> [0] v263
      • v273 (58) = Load <byte> v272 v42
      • v275 (58) = ZeroExt8to32 <uint32> v273
      • v276 (58) = NilCheck <void> v263 v42
      • v278 (58) = OffPtr <*byte> [1] v263
      • v279 (58) = Load <byte> v278 v42
      • v281 (58) = ZeroExt8to32 <uint32> v279
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v285 (58) = NilCheck <void> v263 v42
      • v287 (58) = OffPtr <*byte> [2] v263
      • v288 (58) = Load <byte> v287 v42
      • v290 (58) = ZeroExt8to32 <uint32> v288
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v294 (58) = NilCheck <void> v263 v42
      • v296 (58) = OffPtr <*byte> [3] v263
      • v297 (58) = Load <byte> v296 v42
      • v299 (58) = ZeroExt8to32 <uint32> v297
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v302 (58) = Or32 <uint32> v293 v301
      • v303 (58) = NilCheck <void> v268 v42
      • v304 (58) = OffPtr <*byte> [0] v268
      • v305 (58) = Load <byte> v304 v42
      • v307 (58) = ZeroExt8to32 <uint32> v305
      • v308 (58) = NilCheck <void> v268 v42
      • v309 (58) = OffPtr <*byte> [1] v268
      • v310 (58) = Load <byte> v309 v42
      • v312 (58) = ZeroExt8to32 <uint32> v310
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v315 (58) = NilCheck <void> v268 v42
      • v316 (58) = OffPtr <*byte> [2] v268
      • v317 (58) = Load <byte> v316 v42
      • v319 (58) = ZeroExt8to32 <uint32> v317
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v322 (58) = NilCheck <void> v268 v42
      • v323 (58) = OffPtr <*byte> [3] v268
      • v324 (58) = Load <byte> v323 v42
      • v326 (58) = ZeroExt8to32 <uint32> v324
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v328 (58) = Or32 <uint32> v321 v327
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = NilCheck <void> v8 v42
      • v247 (55) = OffPtr <*uint8> [81] v8
      • v248 (55) = Load <uint8> v247 v42
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v191 v249
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v635 (18) = Add64 <uintptr> v250 v253
      • v254 (18) = Add64 <uintptr> v148 v635
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v332 (+62) = NilCheck <void> v6 v42
      • v333 (62) = OffPtr <*unsafe.Pointer> [0] v6
      • v334 (62) = Load <unsafe.Pointer> v333 v42 (p[unsafe.Pointer])
      • v335 (62) = NilCheck <void> v6 v42
      • v336 (62) = OffPtr <*int> [8] v6
      • v337 (62) = Load <int> v336 v42
      • v341 (62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v334 v42
      • v347 (+62) = NilCheck <void> v794 v42
      • v348 (62) = OffPtr <*unsafe.Pointer> [0] v794
      • v349 (62) = Load <unsafe.Pointer> v348 v42 (p[unsafe.Pointer])
      • v351 (62) = NilCheck <void> v6 v42
      • v352 (62) = OffPtr <*int> [8] v6
      • v353 (62) = Load <int> v352 v42
      • v356 (62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v349 v42
      • v625 (18) = Add64 <uintptr> v353 v357
      • v632 (18) = Add64 <uintptr> v337 v342
      • v630 (62) = Const64 <uintptr> [-4]
      • v343 (18) = Add64 <uintptr> v627 v632
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v358 (18) = Add64 <uintptr> v627 v625
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = NilCheck <void> v344 v42
      • v366 (62) = OffPtr <*byte> [0] v344
      • v367 (62) = Load <byte> v366 v42
      • v369 (62) = ZeroExt8to32 <uint32> v367
      • v370 (62) = NilCheck <void> v344 v42
      • v371 (62) = OffPtr <*byte> [1] v344
      • v372 (62) = Load <byte> v371 v42
      • v374 (62) = ZeroExt8to32 <uint32> v372
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v377 (62) = NilCheck <void> v344 v42
      • v378 (62) = OffPtr <*byte> [2] v344
      • v379 (62) = Load <byte> v378 v42
      • v381 (62) = ZeroExt8to32 <uint32> v379
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v376 v382
      • v384 (62) = NilCheck <void> v344 v42
      • v385 (62) = OffPtr <*byte> [3] v344
      • v386 (62) = Load <byte> v385 v42
      • v388 (62) = ZeroExt8to32 <uint32> v386
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v390 (62) = Or32 <uint32> v383 v389
      • v391 (62) = NilCheck <void> v359 v42
      • v392 (62) = OffPtr <*byte> [0] v359
      • v393 (62) = Load <byte> v392 v42
      • v395 (62) = ZeroExt8to32 <uint32> v393
      • v396 (62) = NilCheck <void> v359 v42
      • v397 (62) = OffPtr <*byte> [1] v359
      • v398 (62) = Load <byte> v397 v42
      • v400 (62) = ZeroExt8to32 <uint32> v398
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v403 (62) = NilCheck <void> v359 v42
      • v404 (62) = OffPtr <*byte> [2] v359
      • v405 (62) = Load <byte> v404 v42
      • v407 (62) = ZeroExt8to32 <uint32> v405
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v402 v408
      • v410 (62) = NilCheck <void> v359 v42
      • v411 (62) = OffPtr <*byte> [3] v359
      • v412 (62) = Load <byte> v411 v42
      • v414 (62) = ZeroExt8to32 <uint32> v412
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v416 (62) = Or32 <uint32> v409 v415
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v419 (+65) = Neq64 <bool> v789 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v426 (+18) = OffPtr <unsafe.Pointer> [16] v794 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v428 (+46) = Add64 <uintptr> v191 v173 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (77) = OffPtr <*byte> [0] v479
      • v482 (+77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v437 (+72) = Lsh64x64 <uintptr> [false] v789 v601
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v451 (73) = NilCheck <void> v6 v42
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v6
      • v453 (73) = Load <unsafe.Pointer> v452 v42
      • v454 (73) = NilCheck <void> v6 v42
      • v455 (73) = OffPtr <*int> [8] v6
      • v456 (73) = Load <int> v455 v42
      • v741 (18) = Add64 <uintptr> v437 v441
      • v442 (18) = Add64 <uintptr> v69 v741
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v447 (+73) = NilCheck <void> v443 v42
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v443
      • v449 (73) = Load <unsafe.Pointer> v448 v42
      • v458 (73) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v456 v42
      • v459 (73) = SelectN <mem> [1] v458
      • v460 (73) = SelectN <bool> [0] v458
    • If v460b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = NilCheck <void> v8 v459
      • v467 (74) = OffPtr <*uint8> [81] v8
      • v468 (74) = Load <uint8> v467 v459
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v789 v469
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v734 (18) = Add64 <uintptr> v470 v473
      • v474 (18) = Add64 <uintptr> v148 v734
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v486 (+80) = InlMark <void> [5618] v42
      • v492 (+80) = NilCheck <void> v9 v42
      • v493 (80) = OffPtr <*uint32> [12] v9
      • v494 (80) = Load <uint32> v493 v42
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v497 (80) = NilCheck <void> v8 v42
      • v498 (80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v8
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v42
      • v501 (80) = Load <uintptr> v499 v42
      • v502 (80) = ClosureLECall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v6 v495 v42
      • v503 (80) = SelectN <mem> [1] v502
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v505 (+81) = NilCheck <void> v9 v503
      • v506 (81) = OffPtr <*uint8> [9] v9
      • v507 (81) = Load <uint8> v506 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (+187) = And8 <uint8> v507 v510
      • v512 (187) = Lsh64x8 <uintptr> [false] v173 v511 (~R0[uintptr])
      • v514 (+192) = Add64 <uintptr> v729 v512 (~R0[uintptr], m[uintptr])
      • v518 (+82) = NilCheck <void> v9 v503
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v9
      • v520 (82) = Load <unsafe.Pointer> v519 v503 (p[unsafe.Pointer])
      • v522 (82) = And64 <uintptr> v504 v514
      • v524 (82) = NilCheck <void> v8 v503
      • v525 (82) = OffPtr <*uint16> [82] v8
      • v526 (82) = Load <uint16> v525 v503
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v529 (82) = InlMark <void> [5620] v503
      • v532 (+18) = AddPtr <unsafe.Pointer> v520 v528 (~R0[unsafe.Pointer], b[*bmap])
      • v537 (+83) = NilCheck <void> v9 v503
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v9
      • v539 (83) = Load <unsafe.Pointer> v538 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v540 (83) = IsNonNil <bool> v539
    • If v540b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v588 (+197) = Rsh64Ux64 <uintptr> [false] v504 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (+198) = Less8U <bool> v589 v579
    • If v590b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v544 (+1128) = NilCheck <void> v9 v503
      • v545 (1128) = OffPtr <*uint8> [8] v9
      • v546 (1128) = Load <uint8> v545 v503
      • v548 (1128) = And8 <uint8> v546 v547
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • If v549b81 b80 (+84)
    • b80: ← b78
      • v553 (+86) = Rsh64Ux64 <uintptr> [false] v514 v552 (m[uintptr])
    • Plainb81 (86)
    • b81: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v553 (m[uintptr])
      • v557 (+88) = And64 <uintptr> v504 v556
      • v560 (88) = NilCheck <void> v8 v503
      • v561 (88) = OffPtr <*uint16> [82] v8
      • v562 (88) = Load <uint16> v561 v503
      • v563 (88) = ZeroExt16to64 <uintptr> v562
      • v564 (88) = Mul64 <uintptr> v557 v563 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v568 (+18) = AddPtr <unsafe.Pointer> v539 v564 (b[*bmap], ~R0[unsafe.Pointer], b[*bmap], oldb[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v573 (+205) = NilCheck <void> v568 v503
      • v575 (205) = OffPtr <*uint8> [0] v568
      • v576 (205) = Load <uint8> v575 v503 (h[uint8])
      • v577 (+206) = Less8U <bool> v103 v576
    • If v577b84 b86 (206)
    • b84: ← b81
      • v580 (206) = Less8U <bool> v576 v579 (~R0[bool])
    • If v580b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84 b81
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = Add8 <uint8> v589 v579 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (~R0[uint8], top[uint8], top[uint8])
    • Plainb90 (+94)
    • b90: ← b89 b113
      • v595 (94) = Phi <*bmap> v756 v707 (b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer])
      • v753 (105) = Phi <mem> v503 v751
      • v597 (+94) = IsNonNil <bool> v595
    • If v597b95 b93 (likely) (94)
    • b93: ← b90
      • v710 (105) = OffPtr <*byte> [0] v709
      • v712 (+105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v753
      • v602 (+218) = InlMark <void> [5633] v753
      • v605 (+18) = OffPtr <unsafe.Pointer> [8] v595 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v753 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v609 (+95) = Less64U <bool> v608 v69
    • If v609b97 b113 (likely) (95)
    • b97: ← b96
      • v613 (+97) = NilCheck <void> v752 v751
      • v614 (97) = OffPtr <*int> [8] v752
      • v615 (97) = Load <int> v614 v751
      • v617 (97) = NilCheck <void> v6 v751
      • v618 (97) = OffPtr <*int> [8] v6
      • v619 (97) = Load <int> v618 v751
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b105 b101 (97)
    • b100: ← b101
      • v629 (97) = AddPtr <*uint8> v624 v608
      • v631 (97) = Load <uint8> v629 v751
      • v633 (97) = Neq8 <bool> v631 v593
    • If v633b105 b104 (97)
    • b101: ← b97
      • v623 (97) = NilCheck <void> v595 v751
      • v624 (97) = OffPtr <*[8]uint8> [0] v595
      • v626 (97) = IsInBounds <bool> v608 v95
    • If v626b100 b103 (likely) (97)
    • b103: ← b101
      • v628 (97) = PanicBounds <mem> [1] v608 v95 v751
    • Exit v628 (97)
    • b104: ← b100
      • v637 (+100) = NilCheck <void> v752 v751
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v639 (100) = Load <unsafe.Pointer> v638 v751
      • v641 (100) = NilCheck <void> v6 v751
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v643 (100) = Load <unsafe.Pointer> v642 v751
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v647 (100) = NilCheck <void> v752 v751
      • v648 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v649 (100) = Load <unsafe.Pointer> v648 v751
      • v651 (100) = NilCheck <void> v6 v751
      • v652 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v653 (100) = Load <unsafe.Pointer> v652 v751
      • v654 (100) = NilCheck <void> v6 v751
      • v655 (100) = OffPtr <*int> [8] v6
      • v656 (100) = Load <int> v655 v751
      • v658 (100) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v649 v653 v656 v751
      • v659 (100) = SelectN <mem> [1] v658
      • v660 (100) = SelectN <bool> [0] v658
    • If v660b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v667 (+101) = NilCheck <void> v8 v704
      • v668 (101) = OffPtr <*uint8> [81] v8
      • v669 (101) = Load <uint8> v668 v704
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v608 v670
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v595 v704
      • v691 (18) = Add64 <uintptr> v671 v674
      • v675 (18) = Add64 <uintptr> v148 v691
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v685 (+18) = OffPtr <unsafe.Pointer> [16] v752 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v687 (+95) = Add64 <uintptr> v608 v173 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v694 (+210) = NilCheck <void> v8 v751
      • v695 (210) = OffPtr <*uint16> [82] v8
      • v696 (210) = Load <uint16> v695 v751
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v699 (210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v595 v751
      • v689 (18) = Add64 <uintptr> v697 v700
      • v701 (18) = Add64 <uintptr> v690 v689
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = NilCheck <void> v702 v751
      • v707 (210) = Load <*bmap> v702 v751 (b[*bmap], ~R0[*bmap])
    • Plainb90 (+94)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v157
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v251
  • name ~R0[unsafe.Pointer]: v255
  • name p[unsafe.Pointer]: v334
  • name x[uintptr]: v340
  • name ~R0[unsafe.Pointer]: v344
  • name p[unsafe.Pointer]: v349
  • name x[uintptr]: v355
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v438
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v471
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name x[uintptr]: v487
  • name ~R0[unsafe.Pointer]: v489
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v595 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name ~R0[bool]: v580
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v672
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name x[uintptr]: v166
  • name ~R0[unsafe.Pointer]: v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v698
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • opt deadcode [83263 ns]

    b1 b1 If b2 b2 If b1->b2 0 b5 b5 Ret b1->b5 1 b2->b5 0 b4 b4 If b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 If b4->b8 1 b7->b8 0 b10 b10 If b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 If b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 If b14->b15 0 b16 b16 If b15->b16 0 b18 b18 Ret b15->b18 1 b25 b25 If b16->b25 0 b20 b20 If b16->b20 1 b19 b19 If b19->b25 0 b24 b24 If b19->b24 1 b20->b19 0 b22 b22 Exit b20->b22 1 b34 b34 Ret b24->b34 0 b30 b30 If b24->b30 1 b28 b28 If b25->b28 0 b29 b29 Exit b25->b29 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 If b37->b38 0 b39 b39 If b38->b39 0 b41 b41 If b38->b41 1 b48 b48 If b39->b48 0 b43 b43 If b39->b43 1 b68 b68 If b41->b68 0 b66 b66 Ret b41->b66 1 b42 b42 If b42->b48 0 b47 b47 If b42->b47 1 b43->b42 0 b45 b45 Exit b43->b45 1 b55 b55 Ret b47->b55 0 b53 b53 If b47->b53 1 b51 b51 If b48->b51 0 b52 b52 Exit b48->b52 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 If b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 If b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 If b75->b78 0 b76 b76 If b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b81 b81 If b78->b81 0 b80 b80 Plain b78->b80 1 b80->b81 0 b84 b84 If b81->b84 0 b86 b86 Plain b81->b86 1 b85 b85 Plain b84->b85 0 b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b90 b90 If b89->b90 0 b95 b95 Plain b90->b95 0 b93 b93 Ret b90->b93 1 b96 b96 If b95->b96 0 b97 b97 If b96->b97 0 b113 b113 Plain b96->b113 1 b105 b105 Plain b97->b105 0 b101 b101 If b97->b101 1 b100 b100 If b100->b105 0 b104 b104 If b100->b104 1 b101->b100 0 b103 b103 Exit b101->b103 1 b110 b110 Ret b104->b110 0 b106 b106 If b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (p[unsafe.Pointer], sp[*string], key[*stringStruct], ~R0[*stringStruct])
      • v8 (13) = Arg <*abi.MapType> {t} (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = Arg <*hmap> {h} (h[*hmap], h[*hmap])
      • v10 (13) = Arg <string> {ky}
      • v11 (+13) = Store <mem> {string} v6 v10 v1
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (x[uintptr], keymaybe[uintptr], x[uintptr], x[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v95 (?) = Const64 <int> [8]
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v173 (?) = Const64 <uintptr> [1]
      • v176 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v282 (?) = Const64 <uint> [8]
      • v291 (?) = Const64 <uint> [16]
      • v300 (?) = Const64 <uint> [24]
      • v479 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v709 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v717 (+18) = IsNonNil <bool> v9
      • v661 (?) = Addr <*uint8> {go:string."concurrent map read and map write"} v3
      • v581 (?) = Const64 <int> [33]
      • v627 (62) = Const64 <uintptr> [-4]
      • v601 (+72) = Const64 <uintptr> [4]
      • v729 (+192) = Const64 <uintptr> [-1]
      • v690 (210) = Const64 <uintptr> [-8]
      • v38 (?) = StringMake <string> v661 v581
    • If v717b2 b5 (18)
    • b2: ← b1
      • v17 (18) = NilCheck <void> v9 v11
      • v18 (18) = OffPtr <*int> [0] v9
      • v19 (18) = Load <int> v18 v11
      • v21 (18) = Eq64 <bool> v19 v20
    • If v21b5 b4 (18)
    • b4: ← b2
      • v31 (+21) = NilCheck <void> v9 v11
      • v32 (21) = OffPtr <*uint8> [8] v9
      • v33 (21) = Load <uint8> v32 v11
      • v35 (21) = And8 <uint8> v33 v34
      • v37 (21) = Neq8 <bool> v35 v36
    • If v37b7 b8 (21)
    • b5: ← b2 b1
      • v25 (19) = OffPtr <*byte> [0] v23
      • v27 (+19) = MakeResult <unsafe.Pointer,mem> v25 v11
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = StaticLECall <mem> {AuxCall{runtime.fatal}} [16] v38 v11
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v11 v41
      • v49 (+25) = NilCheck <void> v9 v42
      • v50 (25) = OffPtr <*uint8> [9] v9
      • v51 (25) = Load <uint8> v50 v42
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v55 (+27) = NilCheck <void> v9 v42
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v9
      • v57 (27) = Load <unsafe.Pointer> v56 v42 (p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer])
      • v60 (+28) = NilCheck <void> v6 v42
      • v61 (28) = OffPtr <*int> [8] v6
      • v62 (28) = Load <int> v61 v42
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v73 (+18) = OffPtr <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v78 (+30) = Less64U <bool> v77 v69
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v82 (+32) = NilCheck <void> v816 v810
      • v83 (32) = OffPtr <*int> [8] v816
      • v84 (32) = Load <int> v83 v810
      • v86 (32) = NilCheck <void> v6 v810
      • v87 (32) = OffPtr <*int> [8] v6
      • v88 (32) = Load <int> v87 v810
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b25 b20 (32)
    • b18: ← b15 b27
      • v177 (42) = OffPtr <*byte> [0] v176
      • v179 (+42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b20
      • v99 (32) = AddPtr <*uint8> v93 v77
      • v101 (32) = Load <uint8> v99 v810 (x[uint8])
      • v102 (32) = InlMark <void> [5608] v810
      • v104 (+113) = Leq8U <bool> v101 v103 (~R0[bool])
    • If v104b25 b24 (+32)
    • b20: ← b16
      • v92 (32) = NilCheck <void> v57 v810
      • v93 (32) = OffPtr <*[8]uint8> [0] v57
      • v96 (32) = IsInBounds <bool> v77 v95
    • If v96b19 b22 (likely) (32)
    • b22: ← b20
      • v98 (32) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v98 (32)
    • b24: ← b19
      • v121 (+38) = NilCheck <void> v816 v810
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v123 (38) = Load <unsafe.Pointer> v122 v810
      • v125 (38) = NilCheck <void> v6 v810
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v127 (38) = Load <unsafe.Pointer> v126 v810
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b34 b30 (38)
    • b25: ← b19 b16
      • v109 (+33) = NilCheck <void> v57 v810
      • v110 (33) = OffPtr <*[8]uint8> [0] v57
      • v112 (33) = IsInBounds <bool> v77 v95
    • If v112b28 b29 (likely) (33)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b25
      • v115 (33) = AddPtr <*uint8> v110 v77
      • v117 (33) = Load <uint8> v115 v810
      • v118 (33) = Eq8 <bool> v117 v36
    • If v118b27 b26 (33)
    • b29: ← b25
      • v114 (33) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v114 (33)
    • b30: ← b24
      • v131 (38) = NilCheck <void> v816 v810
      • v132 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v133 (38) = Load <unsafe.Pointer> v132 v810
      • v135 (38) = NilCheck <void> v6 v810
      • v136 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v137 (38) = Load <unsafe.Pointer> v136 v810
      • v138 (38) = NilCheck <void> v6 v810
      • v139 (38) = OffPtr <*int> [8] v6
      • v140 (38) = Load <int> v139 v810
      • v142 (38) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v133 v137 v140 v810
      • v143 (38) = SelectN <mem> [1] v142
      • v144 (38) = SelectN <bool> [0] v142
    • If v144b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v152 (+39) = NilCheck <void> v8 v703
      • v153 (39) = OffPtr <*uint8> [81] v8
      • v154 (39) = Load <uint8> v153 v703
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v77 v155
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v688 (18) = Add64 <uintptr> v156 v159
      • v160 (18) = Add64 <uintptr> v148 v688
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v171 (+18) = OffPtr <unsafe.Pointer> [16] v816 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v174 (+30) = Add64 <uintptr> v77 v173 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v188 (+18) = OffPtr <unsafe.Pointer> [8] v57 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (i[uintptr], keymaybe[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v192 (+46) = Less64U <bool> v191 v69
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v196 (+48) = NilCheck <void> v794 v42
      • v197 (48) = OffPtr <*int> [8] v794
      • v198 (48) = Load <int> v197 v42
      • v200 (48) = NilCheck <void> v6 v42
      • v201 (48) = OffPtr <*int> [8] v6
      • v202 (48) = Load <int> v201 v42
      • v203 (48) = Neq64 <bool> v198 v202
    • If v203b48 b43 (48)
    • b41: ← b38 b50
      • v431 (+71) = Neq64 <bool> v789 v69
    • If v431b68 b66 (71)
    • b42: ← b43
      • v212 (48) = AddPtr <*uint8> v207 v191
      • v214 (48) = Load <uint8> v212 v42 (x[uint8])
      • v215 (48) = InlMark <void> [5612] v42
      • v216 (+113) = Leq8U <bool> v214 v103 (~R0[bool])
    • If v216b48 b47 (+48)
    • b43: ← b39
      • v206 (48) = NilCheck <void> v57 v42
      • v207 (48) = OffPtr <*[8]uint8> [0] v57
      • v209 (48) = IsInBounds <bool> v191 v95
    • If v209b42 b45 (likely) (48)
    • b45: ← b43
      • v211 (48) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v211 (48)
    • b47: ← b42
      • v233 (+54) = NilCheck <void> v794 v42
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v794
      • v235 (54) = Load <unsafe.Pointer> v234 v42
      • v237 (54) = NilCheck <void> v6 v42
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v6
      • v239 (54) = Load <unsafe.Pointer> v238 v42
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b55 b53 (54)
    • b48: ← b42 b39
      • v221 (+49) = NilCheck <void> v57 v42
      • v222 (49) = OffPtr <*[8]uint8> [0] v57
      • v224 (49) = IsInBounds <bool> v191 v95
    • If v224b51 b52 (likely) (49)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b48
      • v227 (49) = AddPtr <*uint8> v222 v191
      • v229 (49) = Load <uint8> v227 v42
      • v230 (49) = Eq8 <bool> v229 v36
    • If v230b50 b49 (49)
    • b52: ← b48
      • v226 (49) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v226 (49)
    • b53: ← b47
      • v261 (+58) = NilCheck <void> v6 v42
      • v262 (58) = OffPtr <*unsafe.Pointer> [0] v6
      • v263 (58) = Load <unsafe.Pointer> v262 v42
      • v266 (58) = NilCheck <void> v794 v42
      • v267 (58) = OffPtr <*unsafe.Pointer> [0] v794
      • v268 (58) = Load <unsafe.Pointer> v267 v42
      • v270 (58) = NilCheck <void> v263 v42
      • v272 (58) = OffPtr <*byte> [0] v263
      • v273 (58) = Load <byte> v272 v42
      • v275 (58) = ZeroExt8to32 <uint32> v273
      • v276 (58) = NilCheck <void> v263 v42
      • v278 (58) = OffPtr <*byte> [1] v263
      • v279 (58) = Load <byte> v278 v42
      • v281 (58) = ZeroExt8to32 <uint32> v279
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v285 (58) = NilCheck <void> v263 v42
      • v287 (58) = OffPtr <*byte> [2] v263
      • v288 (58) = Load <byte> v287 v42
      • v290 (58) = ZeroExt8to32 <uint32> v288
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v294 (58) = NilCheck <void> v263 v42
      • v296 (58) = OffPtr <*byte> [3] v263
      • v297 (58) = Load <byte> v296 v42
      • v299 (58) = ZeroExt8to32 <uint32> v297
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v302 (58) = Or32 <uint32> v293 v301
      • v303 (58) = NilCheck <void> v268 v42
      • v304 (58) = OffPtr <*byte> [0] v268
      • v305 (58) = Load <byte> v304 v42
      • v307 (58) = ZeroExt8to32 <uint32> v305
      • v308 (58) = NilCheck <void> v268 v42
      • v309 (58) = OffPtr <*byte> [1] v268
      • v310 (58) = Load <byte> v309 v42
      • v312 (58) = ZeroExt8to32 <uint32> v310
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v315 (58) = NilCheck <void> v268 v42
      • v316 (58) = OffPtr <*byte> [2] v268
      • v317 (58) = Load <byte> v316 v42
      • v319 (58) = ZeroExt8to32 <uint32> v317
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v322 (58) = NilCheck <void> v268 v42
      • v323 (58) = OffPtr <*byte> [3] v268
      • v324 (58) = Load <byte> v323 v42
      • v326 (58) = ZeroExt8to32 <uint32> v324
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v328 (58) = Or32 <uint32> v321 v327
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = NilCheck <void> v8 v42
      • v247 (55) = OffPtr <*uint8> [81] v8
      • v248 (55) = Load <uint8> v247 v42
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v191 v249
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v635 (18) = Add64 <uintptr> v250 v253
      • v254 (18) = Add64 <uintptr> v148 v635
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v332 (+62) = NilCheck <void> v6 v42
      • v333 (62) = OffPtr <*unsafe.Pointer> [0] v6
      • v334 (62) = Load <unsafe.Pointer> v333 v42 (p[unsafe.Pointer])
      • v335 (62) = NilCheck <void> v6 v42
      • v336 (62) = OffPtr <*int> [8] v6
      • v337 (62) = Load <int> v336 v42
      • v341 (62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v334 v42
      • v347 (+62) = NilCheck <void> v794 v42
      • v348 (62) = OffPtr <*unsafe.Pointer> [0] v794
      • v349 (62) = Load <unsafe.Pointer> v348 v42 (p[unsafe.Pointer])
      • v351 (62) = NilCheck <void> v6 v42
      • v352 (62) = OffPtr <*int> [8] v6
      • v353 (62) = Load <int> v352 v42
      • v356 (62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v349 v42
      • v625 (18) = Add64 <uintptr> v353 v357
      • v632 (18) = Add64 <uintptr> v337 v342
      • v343 (18) = Add64 <uintptr> v627 v632
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v358 (18) = Add64 <uintptr> v627 v625
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = NilCheck <void> v344 v42
      • v366 (62) = OffPtr <*byte> [0] v344
      • v367 (62) = Load <byte> v366 v42
      • v369 (62) = ZeroExt8to32 <uint32> v367
      • v370 (62) = NilCheck <void> v344 v42
      • v371 (62) = OffPtr <*byte> [1] v344
      • v372 (62) = Load <byte> v371 v42
      • v374 (62) = ZeroExt8to32 <uint32> v372
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v377 (62) = NilCheck <void> v344 v42
      • v378 (62) = OffPtr <*byte> [2] v344
      • v379 (62) = Load <byte> v378 v42
      • v381 (62) = ZeroExt8to32 <uint32> v379
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v376 v382
      • v384 (62) = NilCheck <void> v344 v42
      • v385 (62) = OffPtr <*byte> [3] v344
      • v386 (62) = Load <byte> v385 v42
      • v388 (62) = ZeroExt8to32 <uint32> v386
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v390 (62) = Or32 <uint32> v383 v389
      • v391 (62) = NilCheck <void> v359 v42
      • v392 (62) = OffPtr <*byte> [0] v359
      • v393 (62) = Load <byte> v392 v42
      • v395 (62) = ZeroExt8to32 <uint32> v393
      • v396 (62) = NilCheck <void> v359 v42
      • v397 (62) = OffPtr <*byte> [1] v359
      • v398 (62) = Load <byte> v397 v42
      • v400 (62) = ZeroExt8to32 <uint32> v398
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v403 (62) = NilCheck <void> v359 v42
      • v404 (62) = OffPtr <*byte> [2] v359
      • v405 (62) = Load <byte> v404 v42
      • v407 (62) = ZeroExt8to32 <uint32> v405
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v402 v408
      • v410 (62) = NilCheck <void> v359 v42
      • v411 (62) = OffPtr <*byte> [3] v359
      • v412 (62) = Load <byte> v411 v42
      • v414 (62) = ZeroExt8to32 <uint32> v412
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v416 (62) = Or32 <uint32> v409 v415
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v419 (+65) = Neq64 <bool> v789 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v426 (+18) = OffPtr <unsafe.Pointer> [16] v794 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v428 (+46) = Add64 <uintptr> v191 v173 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (77) = OffPtr <*byte> [0] v479
      • v482 (+77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v437 (+72) = Lsh64x64 <uintptr> [false] v789 v601
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v451 (73) = NilCheck <void> v6 v42
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v6
      • v453 (73) = Load <unsafe.Pointer> v452 v42
      • v454 (73) = NilCheck <void> v6 v42
      • v455 (73) = OffPtr <*int> [8] v6
      • v456 (73) = Load <int> v455 v42
      • v741 (18) = Add64 <uintptr> v437 v441
      • v442 (18) = Add64 <uintptr> v69 v741
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v447 (+73) = NilCheck <void> v443 v42
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v443
      • v449 (73) = Load <unsafe.Pointer> v448 v42
      • v458 (73) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v456 v42
      • v459 (73) = SelectN <mem> [1] v458
      • v460 (73) = SelectN <bool> [0] v458
    • If v460b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = NilCheck <void> v8 v459
      • v467 (74) = OffPtr <*uint8> [81] v8
      • v468 (74) = Load <uint8> v467 v459
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v789 v469
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v734 (18) = Add64 <uintptr> v470 v473
      • v474 (18) = Add64 <uintptr> v148 v734
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v492 (+80) = NilCheck <void> v9 v42
      • v493 (80) = OffPtr <*uint32> [12] v9
      • v494 (80) = Load <uint32> v493 v42
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v497 (80) = NilCheck <void> v8 v42
      • v498 (+80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v8
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v42
      • v501 (80) = Load <uintptr> v499 v42
      • v502 (80) = ClosureLECall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v6 v495 v42
      • v503 (80) = SelectN <mem> [1] v502
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v505 (+81) = NilCheck <void> v9 v503
      • v506 (81) = OffPtr <*uint8> [9] v9
      • v507 (81) = Load <uint8> v506 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (+187) = And8 <uint8> v507 v510
      • v512 (187) = Lsh64x8 <uintptr> [false] v173 v511 (~R0[uintptr])
      • v514 (+192) = Add64 <uintptr> v729 v512 (~R0[uintptr], m[uintptr])
      • v518 (+82) = NilCheck <void> v9 v503
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v9
      • v520 (82) = Load <unsafe.Pointer> v519 v503 (p[unsafe.Pointer])
      • v522 (82) = And64 <uintptr> v504 v514
      • v524 (82) = NilCheck <void> v8 v503
      • v525 (82) = OffPtr <*uint16> [82] v8
      • v526 (82) = Load <uint16> v525 v503
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v529 (82) = InlMark <void> [5620] v503
      • v532 (+18) = AddPtr <unsafe.Pointer> v520 v528 (b[*bmap], ~R0[unsafe.Pointer])
      • v537 (+83) = NilCheck <void> v9 v503
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v9
      • v539 (83) = Load <unsafe.Pointer> v538 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v540 (83) = IsNonNil <bool> v539
    • If v540b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v588 (+197) = Rsh64Ux64 <uintptr> [false] v504 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (+198) = Less8U <bool> v589 v579
    • If v590b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v544 (+1128) = NilCheck <void> v9 v503
      • v545 (1128) = OffPtr <*uint8> [8] v9
      • v546 (1128) = Load <uint8> v545 v503
      • v548 (1128) = And8 <uint8> v546 v547
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • If v549b81 b80 (+84)
    • b80: ← b78
      • v553 (+86) = Rsh64Ux64 <uintptr> [false] v514 v552 (m[uintptr])
    • Plainb81 (86)
    • b81: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v553 (m[uintptr])
      • v557 (+88) = And64 <uintptr> v504 v556
      • v560 (88) = NilCheck <void> v8 v503
      • v561 (88) = OffPtr <*uint16> [82] v8
      • v562 (88) = Load <uint16> v561 v503
      • v563 (88) = ZeroExt16to64 <uintptr> v562
      • v564 (88) = Mul64 <uintptr> v557 v563 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v568 (+18) = AddPtr <unsafe.Pointer> v539 v564 (b[*bmap], b[*bmap], ~R0[unsafe.Pointer], oldb[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v573 (+205) = NilCheck <void> v568 v503
      • v575 (205) = OffPtr <*uint8> [0] v568
      • v576 (205) = Load <uint8> v575 v503 (h[uint8])
      • v577 (+206) = Less8U <bool> v103 v576
    • If v577b84 b86 (206)
    • b84: ← b81
      • v580 (206) = Less8U <bool> v576 v579 (~R0[bool])
    • If v580b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84 b81
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = Add8 <uint8> v589 v579 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (top[uint8], ~R0[uint8], top[uint8])
    • Plainb90 (+94)
    • b90: ← b89 b113
      • v595 (94) = Phi <*bmap> v756 v707 (b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer])
      • v753 (105) = Phi <mem> v503 v751
      • v597 (+94) = IsNonNil <bool> v595
    • If v597b95 b93 (likely) (94)
    • b93: ← b90
      • v710 (105) = OffPtr <*byte> [0] v709
      • v712 (+105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v753
      • v602 (+218) = InlMark <void> [5633] v753
      • v605 (+18) = OffPtr <unsafe.Pointer> [8] v595 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v753 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v609 (+95) = Less64U <bool> v608 v69
    • If v609b97 b113 (likely) (95)
    • b97: ← b96
      • v613 (+97) = NilCheck <void> v752 v751
      • v614 (97) = OffPtr <*int> [8] v752
      • v615 (97) = Load <int> v614 v751
      • v617 (97) = NilCheck <void> v6 v751
      • v618 (97) = OffPtr <*int> [8] v6
      • v619 (97) = Load <int> v618 v751
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b105 b101 (97)
    • b100: ← b101
      • v629 (97) = AddPtr <*uint8> v624 v608
      • v631 (97) = Load <uint8> v629 v751
      • v633 (97) = Neq8 <bool> v631 v593
    • If v633b105 b104 (97)
    • b101: ← b97
      • v623 (97) = NilCheck <void> v595 v751
      • v624 (97) = OffPtr <*[8]uint8> [0] v595
      • v626 (97) = IsInBounds <bool> v608 v95
    • If v626b100 b103 (likely) (97)
    • b103: ← b101
      • v628 (97) = PanicBounds <mem> [1] v608 v95 v751
    • Exit v628 (97)
    • b104: ← b100
      • v637 (+100) = NilCheck <void> v752 v751
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v639 (100) = Load <unsafe.Pointer> v638 v751
      • v641 (100) = NilCheck <void> v6 v751
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v643 (100) = Load <unsafe.Pointer> v642 v751
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v647 (100) = NilCheck <void> v752 v751
      • v648 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v649 (100) = Load <unsafe.Pointer> v648 v751
      • v651 (100) = NilCheck <void> v6 v751
      • v652 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v653 (100) = Load <unsafe.Pointer> v652 v751
      • v654 (100) = NilCheck <void> v6 v751
      • v655 (100) = OffPtr <*int> [8] v6
      • v656 (100) = Load <int> v655 v751
      • v658 (100) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v649 v653 v656 v751
      • v659 (100) = SelectN <mem> [1] v658
      • v660 (100) = SelectN <bool> [0] v658
    • If v660b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v667 (+101) = NilCheck <void> v8 v704
      • v668 (101) = OffPtr <*uint8> [81] v8
      • v669 (101) = Load <uint8> v668 v704
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v608 v670
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v595 v704
      • v691 (18) = Add64 <uintptr> v671 v674
      • v675 (18) = Add64 <uintptr> v148 v691
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v685 (+18) = OffPtr <unsafe.Pointer> [16] v752 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v687 (+95) = Add64 <uintptr> v608 v173 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v694 (+210) = NilCheck <void> v8 v751
      • v695 (210) = OffPtr <*uint16> [82] v8
      • v696 (210) = Load <uint16> v695 v751
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v699 (210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v595 v751
      • v689 (18) = Add64 <uintptr> v697 v700
      • v701 (18) = Add64 <uintptr> v690 v689
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = NilCheck <void> v702 v751
      • v707 (210) = Load <*bmap> v702 v751 (b[*bmap], ~R0[*bmap])
    • Plainb90 (+94)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v255
  • name p[unsafe.Pointer]: v334
  • name ~R0[unsafe.Pointer]: v344
  • name p[unsafe.Pointer]: v349
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v595 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name ~R0[bool]: v580
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name ~R0[unsafe.Pointer]: v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • generic cse [259657 ns]

    b1 b1 If b2 b2 If b1->b2 0 b5 b5 Ret b1->b5 1 b2->b5 0 b4 b4 If b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 If b4->b8 1 b7->b8 0 b10 b10 If b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 If b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 If b14->b15 0 b16 b16 If b15->b16 0 b18 b18 Ret b15->b18 1 b25 b25 If b16->b25 0 b20 b20 If b16->b20 1 b19 b19 If b19->b25 0 b24 b24 If b19->b24 1 b20->b19 0 b22 b22 Exit b20->b22 1 b34 b34 Ret b24->b34 0 b30 b30 If b24->b30 1 b28 b28 If b25->b28 0 b29 b29 Exit b25->b29 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 If b37->b38 0 b39 b39 If b38->b39 0 b41 b41 If b38->b41 1 b48 b48 If b39->b48 0 b43 b43 If b39->b43 1 b68 b68 If b41->b68 0 b66 b66 Ret b41->b66 1 b42 b42 If b42->b48 0 b47 b47 If b42->b47 1 b43->b42 0 b45 b45 Exit b43->b45 1 b55 b55 Ret b47->b55 0 b53 b53 If b47->b53 1 b51 b51 If b48->b51 0 b52 b52 Exit b48->b52 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 If b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 If b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 If b75->b78 0 b76 b76 If b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b81 b81 If b78->b81 0 b80 b80 Plain b78->b80 1 b80->b81 0 b84 b84 If b81->b84 0 b86 b86 Plain b81->b86 1 b85 b85 Plain b84->b85 0 b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b90 b90 If b89->b90 0 b95 b95 Plain b90->b95 0 b93 b93 Ret b90->b93 1 b96 b96 If b95->b96 0 b97 b97 If b96->b97 0 b113 b113 Plain b96->b113 1 b105 b105 Plain b97->b105 0 b101 b101 If b97->b101 1 b100 b100 If b100->b105 0 b104 b104 If b100->b104 1 b101->b100 0 b103 b103 Exit b101->b103 1 b110 b110 Ret b104->b110 0 b106 b106 If b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (~R0[*stringStruct], p[unsafe.Pointer], sp[*string], key[*stringStruct])
      • v8 (13) = Arg <*abi.MapType> {t} (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = Arg <*hmap> {h} (h[*hmap], h[*hmap])
      • v10 (13) = Arg <string> {ky}
      • v11 (+13) = Store <mem> {string} v6 v10 v1
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (x[uintptr], x[uintptr], keymaybe[uintptr], x[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v95 (?) = Const64 <int> [8]
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v173 (?) = Const64 <uintptr> [1]
      • v176 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v282 (?) = Const64 <uint> [8]
      • v291 (?) = Const64 <uint> [16]
      • v300 (?) = Const64 <uint> [24]
      • v479 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v709 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v717 (+18) = IsNonNil <bool> v9
      • v661 (?) = Addr <*uint8> {go:string."concurrent map read and map write"} v3
      • v581 (?) = Const64 <int> [33]
      • v627 (62) = Const64 <uintptr> [-4]
      • v601 (+72) = Const64 <uintptr> [4]
      • v729 (+192) = Const64 <uintptr> [-1]
      • v690 (210) = Const64 <uintptr> [-8]
      • v38 (?) = StringMake <string> v661 v581
    • If v717b2 b5 (18)
    • b2: ← b1
      • v17 (18) = NilCheck <void> v9 v11
      • v18 (18) = OffPtr <*int> [0] v9
      • v19 (18) = Load <int> v18 v11
      • v21 (18) = Eq64 <bool> v19 v20
    • If v21b5 b4 (18)
    • b4: ← b2
      • v31 (+21) = NilCheck <void> v9 v11
      • v32 (21) = OffPtr <*uint8> [8] v9
      • v33 (21) = Load <uint8> v32 v11
      • v35 (21) = And8 <uint8> v34 v33
      • v37 (21) = Neq8 <bool> v36 v35
    • If v37b7 b8 (21)
    • b5: ← b2 b1
      • v25 (19) = OffPtr <*byte> [0] v23
      • v27 (+19) = MakeResult <unsafe.Pointer,mem> v25 v11
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = StaticLECall <mem> {AuxCall{runtime.fatal}} [16] v38 v11
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v11 v41
      • v49 (+25) = NilCheck <void> v9 v42
      • v50 (25) = OffPtr <*uint8> [9] v9
      • v51 (25) = Load <uint8> v50 v42
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v55 (+27) = NilCheck <void> v9 v42
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v9
      • v57 (27) = Load <unsafe.Pointer> v56 v42 (p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap])
      • v60 (+28) = NilCheck <void> v6 v42
      • v61 (28) = OffPtr <*int> [8] v6
      • v62 (28) = Load <int> v61 v42
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v73 (+18) = OffPtr <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v78 (+30) = Less64U <bool> v77 v69
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v82 (+32) = NilCheck <void> v816 v810
      • v83 (32) = OffPtr <*int> [8] v816
      • v84 (32) = Load <int> v83 v810
      • v86 (32) = NilCheck <void> v6 v810
      • v87 (32) = OffPtr <*int> [8] v6
      • v88 (32) = Load <int> v61 v810
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b25 b20 (32)
    • b18: ← b15 b27
      • v177 (42) = OffPtr <*byte> [0] v23
      • v179 (+42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b20
      • v99 (32) = AddPtr <*uint8> v93 v77
      • v101 (32) = Load <uint8> v99 v810 (x[uint8])
      • v102 (32) = InlMark <void> [5608] v810
      • v104 (+113) = Leq8U <bool> v101 v103 (~R0[bool])
    • If v104b25 b24 (+32)
    • b20: ← b16
      • v92 (32) = NilCheck <void> v57 v810
      • v93 (32) = OffPtr <*[8]uint8> [0] v57
      • v96 (32) = IsInBounds <bool> v77 v95
    • If v96b19 b22 (likely) (32)
    • b22: ← b20
      • v98 (32) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v98 (32)
    • b24: ← b19
      • v121 (+38) = NilCheck <void> v816 v810
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v123 (38) = Load <unsafe.Pointer> v122 v810
      • v125 (38) = NilCheck <void> v6 v810
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v127 (38) = Load <unsafe.Pointer> v126 v810
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b34 b30 (38)
    • b25: ← b19 b16
      • v109 (+33) = NilCheck <void> v57 v810
      • v110 (33) = OffPtr <*[8]uint8> [0] v57
      • v112 (33) = IsInBounds <bool> v77 v95
    • If v112b28 b29 (likely) (33)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b25
      • v115 (33) = AddPtr <*uint8> v110 v77
      • v117 (33) = Load <uint8> v115 v810
      • v118 (33) = Eq8 <bool> v36 v117
    • If v118b27 b26 (33)
    • b29: ← b25
      • v114 (33) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v114 (33)
    • b30: ← b24
      • v131 (38) = NilCheck <void> v816 v810
      • v132 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v133 (38) = Load <unsafe.Pointer> v122 v810
      • v135 (38) = NilCheck <void> v6 v810
      • v136 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v137 (38) = Load <unsafe.Pointer> v126 v810
      • v138 (38) = NilCheck <void> v6 v810
      • v139 (38) = OffPtr <*int> [8] v6
      • v140 (38) = Load <int> v61 v810
      • v142 (38) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v123 v127 v88 v810
      • v143 (38) = SelectN <mem> [1] v142
      • v144 (38) = SelectN <bool> [0] v142
    • If v144b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v152 (+39) = NilCheck <void> v8 v703
      • v153 (39) = OffPtr <*uint8> [81] v8
      • v154 (39) = Load <uint8> v153 v703
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v77 v155
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v688 (18) = Add64 <uintptr> v159 v156
      • v160 (18) = Add64 <uintptr> v688 v148
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v171 (+18) = OffPtr <unsafe.Pointer> [16] v816 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v174 (+30) = Add64 <uintptr> v173 v77 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v188 (+18) = OffPtr <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (keymaybe[uintptr], i[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v192 (+46) = Less64U <bool> v191 v69
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v196 (+48) = NilCheck <void> v794 v42
      • v197 (48) = OffPtr <*int> [8] v794
      • v198 (48) = Load <int> v197 v42
      • v200 (48) = NilCheck <void> v6 v42
      • v201 (48) = OffPtr <*int> [8] v6
      • v202 (48) = Load <int> v61 v42
      • v203 (48) = Neq64 <bool> v198 v62
    • If v203b48 b43 (48)
    • b41: ← b38 b50
      • v431 (+71) = Neq64 <bool> v789 v69
    • If v431b68 b66 (71)
    • b42: ← b43
      • v212 (48) = AddPtr <*uint8> v207 v191
      • v214 (48) = Load <uint8> v212 v42 (x[uint8])
      • v215 (48) = InlMark <void> [5612] v42
      • v216 (+113) = Leq8U <bool> v214 v103 (~R0[bool])
    • If v216b48 b47 (+48)
    • b43: ← b39
      • v206 (48) = NilCheck <void> v57 v42
      • v207 (48) = OffPtr <*[8]uint8> [0] v57
      • v209 (48) = IsInBounds <bool> v191 v95
    • If v209b42 b45 (likely) (48)
    • b45: ← b43
      • v211 (48) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v211 (48)
    • b47: ← b42
      • v233 (+54) = NilCheck <void> v794 v42
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v794
      • v235 (54) = Load <unsafe.Pointer> v234 v42
      • v237 (54) = NilCheck <void> v6 v42
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v6
      • v239 (54) = Load <unsafe.Pointer> v238 v42
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b55 b53 (54)
    • b48: ← b42 b39
      • v221 (+49) = NilCheck <void> v57 v42
      • v222 (49) = OffPtr <*[8]uint8> [0] v57
      • v224 (49) = IsInBounds <bool> v191 v95
    • If v224b51 b52 (likely) (49)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b48
      • v227 (49) = AddPtr <*uint8> v222 v191
      • v229 (49) = Load <uint8> v227 v42
      • v230 (49) = Eq8 <bool> v36 v229
    • If v230b50 b49 (49)
    • b52: ← b48
      • v226 (49) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v226 (49)
    • b53: ← b47
      • v261 (+58) = NilCheck <void> v6 v42
      • v262 (58) = OffPtr <*unsafe.Pointer> [0] v6
      • v263 (58) = Load <unsafe.Pointer> v238 v42
      • v266 (58) = NilCheck <void> v794 v42
      • v267 (58) = OffPtr <*unsafe.Pointer> [0] v794
      • v268 (58) = Load <unsafe.Pointer> v234 v42
      • v270 (58) = NilCheck <void> v239 v42
      • v272 (58) = OffPtr <*byte> [0] v239
      • v273 (58) = Load <byte> v272 v42
      • v275 (58) = ZeroExt8to32 <uint32> v273
      • v276 (58) = NilCheck <void> v239 v42
      • v278 (58) = OffPtr <*byte> [1] v239
      • v279 (58) = Load <byte> v278 v42
      • v281 (58) = ZeroExt8to32 <uint32> v279
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v285 (58) = NilCheck <void> v239 v42
      • v287 (58) = OffPtr <*byte> [2] v239
      • v288 (58) = Load <byte> v287 v42
      • v290 (58) = ZeroExt8to32 <uint32> v288
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v294 (58) = NilCheck <void> v239 v42
      • v296 (58) = OffPtr <*byte> [3] v239
      • v297 (58) = Load <byte> v296 v42
      • v299 (58) = ZeroExt8to32 <uint32> v297
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v302 (58) = Or32 <uint32> v293 v301
      • v303 (58) = NilCheck <void> v235 v42
      • v304 (58) = OffPtr <*byte> [0] v235
      • v305 (58) = Load <byte> v304 v42
      • v307 (58) = ZeroExt8to32 <uint32> v305
      • v308 (58) = NilCheck <void> v235 v42
      • v309 (58) = OffPtr <*byte> [1] v235
      • v310 (58) = Load <byte> v309 v42
      • v312 (58) = ZeroExt8to32 <uint32> v310
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v315 (58) = NilCheck <void> v235 v42
      • v316 (58) = OffPtr <*byte> [2] v235
      • v317 (58) = Load <byte> v316 v42
      • v319 (58) = ZeroExt8to32 <uint32> v317
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v322 (58) = NilCheck <void> v235 v42
      • v323 (58) = OffPtr <*byte> [3] v235
      • v324 (58) = Load <byte> v323 v42
      • v326 (58) = ZeroExt8to32 <uint32> v324
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v328 (58) = Or32 <uint32> v321 v327
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = NilCheck <void> v8 v42
      • v247 (55) = OffPtr <*uint8> [81] v8
      • v248 (55) = Load <uint8> v247 v42
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v249 v191
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v635 (18) = Add64 <uintptr> v250 v253
      • v254 (18) = Add64 <uintptr> v635 v148
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v332 (+62) = NilCheck <void> v6 v42
      • v333 (62) = OffPtr <*unsafe.Pointer> [0] v6
      • v334 (62) = Load <unsafe.Pointer> v238 v42 (p[unsafe.Pointer])
      • v335 (62) = NilCheck <void> v6 v42
      • v336 (62) = OffPtr <*int> [8] v6
      • v337 (62) = Load <int> v61 v42
      • v341 (62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v239 v42
      • v347 (+62) = NilCheck <void> v794 v42
      • v348 (62) = OffPtr <*unsafe.Pointer> [0] v794
      • v349 (62) = Load <unsafe.Pointer> v234 v42 (p[unsafe.Pointer])
      • v351 (62) = NilCheck <void> v6 v42
      • v352 (62) = OffPtr <*int> [8] v6
      • v353 (62) = Load <int> v61 v42
      • v356 (62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v235 v42
      • v625 (18) = Add64 <uintptr> v357 v62
      • v632 (18) = Add64 <uintptr> v342 v62
      • v343 (18) = Add64 <uintptr> v632 v627
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v358 (18) = Add64 <uintptr> v627 v625
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = NilCheck <void> v344 v42
      • v366 (62) = OffPtr <*byte> [0] v344
      • v367 (62) = Load <byte> v366 v42
      • v369 (62) = ZeroExt8to32 <uint32> v367
      • v370 (62) = NilCheck <void> v344 v42
      • v371 (62) = OffPtr <*byte> [1] v344
      • v372 (62) = Load <byte> v371 v42
      • v374 (62) = ZeroExt8to32 <uint32> v372
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v377 (62) = NilCheck <void> v344 v42
      • v378 (62) = OffPtr <*byte> [2] v344
      • v379 (62) = Load <byte> v378 v42
      • v381 (62) = ZeroExt8to32 <uint32> v379
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v382 v376
      • v384 (62) = NilCheck <void> v344 v42
      • v385 (62) = OffPtr <*byte> [3] v344
      • v386 (62) = Load <byte> v385 v42
      • v388 (62) = ZeroExt8to32 <uint32> v386
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v390 (62) = Or32 <uint32> v389 v383
      • v391 (62) = NilCheck <void> v359 v42
      • v392 (62) = OffPtr <*byte> [0] v359
      • v393 (62) = Load <byte> v392 v42
      • v395 (62) = ZeroExt8to32 <uint32> v393
      • v396 (62) = NilCheck <void> v359 v42
      • v397 (62) = OffPtr <*byte> [1] v359
      • v398 (62) = Load <byte> v397 v42
      • v400 (62) = ZeroExt8to32 <uint32> v398
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v403 (62) = NilCheck <void> v359 v42
      • v404 (62) = OffPtr <*byte> [2] v359
      • v405 (62) = Load <byte> v404 v42
      • v407 (62) = ZeroExt8to32 <uint32> v405
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v408 v402
      • v410 (62) = NilCheck <void> v359 v42
      • v411 (62) = OffPtr <*byte> [3] v359
      • v412 (62) = Load <byte> v411 v42
      • v414 (62) = ZeroExt8to32 <uint32> v412
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v416 (62) = Or32 <uint32> v415 v409
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v419 (+65) = Neq64 <bool> v789 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v426 (+18) = OffPtr <unsafe.Pointer> [16] v794 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v428 (+46) = Add64 <uintptr> v173 v191 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (77) = OffPtr <*byte> [0] v23
      • v482 (+77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v437 (+72) = Lsh64x64 <uintptr> [false] v789 v601
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v451 (73) = NilCheck <void> v6 v42
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v6
      • v453 (73) = Load <unsafe.Pointer> v452 v42
      • v454 (73) = NilCheck <void> v6 v42
      • v455 (73) = OffPtr <*int> [8] v6
      • v456 (73) = Load <int> v61 v42
      • v741 (18) = Add64 <uintptr> v437 v441
      • v442 (18) = Add64 <uintptr> v69 v741
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v447 (+73) = NilCheck <void> v443 v42
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v443
      • v449 (73) = Load <unsafe.Pointer> v448 v42
      • v458 (73) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v62 v42
      • v459 (73) = SelectN <mem> [1] v458
      • v460 (73) = SelectN <bool> [0] v458
    • If v460b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = NilCheck <void> v8 v459
      • v467 (74) = OffPtr <*uint8> [81] v8
      • v468 (74) = Load <uint8> v467 v459
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v789 v469
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v734 (18) = Add64 <uintptr> v473 v470
      • v474 (18) = Add64 <uintptr> v734 v148
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v492 (+80) = NilCheck <void> v9 v42
      • v493 (80) = OffPtr <*uint32> [12] v9
      • v494 (80) = Load <uint32> v493 v42
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v497 (80) = NilCheck <void> v8 v42
      • v498 (+80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v8
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v42
      • v501 (80) = Load <uintptr> v499 v42
      • v502 (80) = ClosureLECall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v6 v495 v42
      • v503 (80) = SelectN <mem> [1] v502
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v505 (+81) = NilCheck <void> v9 v503
      • v506 (81) = OffPtr <*uint8> [9] v9
      • v507 (81) = Load <uint8> v50 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (+187) = And8 <uint8> v510 v507
      • v512 (187) = Lsh64x8 <uintptr> [false] v173 v511 (~R0[uintptr])
      • v514 (+192) = Add64 <uintptr> v729 v512 (m[uintptr], ~R0[uintptr])
      • v518 (+82) = NilCheck <void> v9 v503
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v9
      • v520 (82) = Load <unsafe.Pointer> v519 v503 (p[unsafe.Pointer])
      • v522 (82) = And64 <uintptr> v514 v504
      • v524 (82) = NilCheck <void> v8 v503
      • v525 (82) = OffPtr <*uint16> [82] v8
      • v526 (82) = Load <uint16> v525 v503
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v529 (82) = InlMark <void> [5620] v503
      • v532 (+18) = AddPtr <unsafe.Pointer> v520 v528 (~R0[unsafe.Pointer], b[*bmap])
      • v537 (+83) = NilCheck <void> v9 v503
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v9
      • v539 (83) = Load <unsafe.Pointer> v538 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v540 (83) = IsNonNil <bool> v539
    • If v540b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v588 (+197) = Rsh64Ux64 <uintptr> [false] v504 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (+198) = Less8U <bool> v589 v579
    • If v590b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v544 (+1128) = NilCheck <void> v9 v503
      • v545 (1128) = OffPtr <*uint8> [8] v9
      • v546 (1128) = Load <uint8> v32 v503
      • v548 (1128) = And8 <uint8> v547 v546
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • If v549b81 b80 (+84)
    • b80: ← b78
      • v553 (+86) = Rsh64Ux64 <uintptr> [false] v514 v552 (m[uintptr])
    • Plainb81 (86)
    • b81: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v553 (m[uintptr])
      • v557 (+88) = And64 <uintptr> v556 v504
      • v560 (88) = NilCheck <void> v8 v503
      • v561 (88) = OffPtr <*uint16> [82] v8
      • v562 (88) = Load <uint16> v525 v503
      • v563 (88) = ZeroExt16to64 <uintptr> v526
      • v564 (88) = Mul64 <uintptr> v557 v527 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v568 (+18) = AddPtr <unsafe.Pointer> v539 v564 (b[*bmap], ~R0[unsafe.Pointer], b[*bmap], oldb[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v573 (+205) = NilCheck <void> v568 v503
      • v575 (205) = OffPtr <*uint8> [0] v568
      • v576 (205) = Load <uint8> v575 v503 (h[uint8])
      • v577 (+206) = Less8U <bool> v103 v576
    • If v577b84 b86 (206)
    • b84: ← b81
      • v580 (206) = Less8U <bool> v576 v579 (~R0[bool])
    • If v580b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84 b81
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = Add8 <uint8> v589 v579 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (~R0[uint8], top[uint8], top[uint8])
    • Plainb90 (+94)
    • b90: ← b89 b113
      • v595 (94) = Phi <*bmap> v756 v707 (b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer])
      • v753 (105) = Phi <mem> v503 v751
      • v597 (+94) = IsNonNil <bool> v595
    • If v597b95 b93 (likely) (94)
    • b93: ← b90
      • v710 (105) = OffPtr <*byte> [0] v23
      • v712 (+105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v753
      • v602 (+218) = InlMark <void> [5633] v753
      • v605 (+18) = OffPtr <unsafe.Pointer> [8] v595 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v753 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (kptr[unsafe.Pointer], p[unsafe.Pointer], k[*stringStruct])
      • v609 (+95) = Less64U <bool> v608 v69
    • If v609b97 b113 (likely) (95)
    • b97: ← b96
      • v613 (+97) = NilCheck <void> v752 v751
      • v614 (97) = OffPtr <*int> [8] v752
      • v615 (97) = Load <int> v614 v751
      • v617 (97) = NilCheck <void> v6 v751
      • v618 (97) = OffPtr <*int> [8] v6
      • v619 (97) = Load <int> v618 v751
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b105 b101 (97)
    • b100: ← b101
      • v629 (97) = AddPtr <*uint8> v624 v608
      • v631 (97) = Load <uint8> v629 v751
      • v633 (97) = Neq8 <bool> v593 v631
    • If v633b105 b104 (97)
    • b101: ← b97
      • v623 (97) = NilCheck <void> v595 v751
      • v624 (97) = OffPtr <*[8]uint8> [0] v595
      • v626 (97) = IsInBounds <bool> v608 v95
    • If v626b100 b103 (likely) (97)
    • b103: ← b101
      • v628 (97) = PanicBounds <mem> [1] v608 v95 v751
    • Exit v628 (97)
    • b104: ← b100
      • v637 (+100) = NilCheck <void> v752 v751
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v639 (100) = Load <unsafe.Pointer> v638 v751
      • v641 (100) = NilCheck <void> v6 v751
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v643 (100) = Load <unsafe.Pointer> v642 v751
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v647 (100) = NilCheck <void> v752 v751
      • v648 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v649 (100) = Load <unsafe.Pointer> v638 v751
      • v651 (100) = NilCheck <void> v6 v751
      • v652 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v653 (100) = Load <unsafe.Pointer> v642 v751
      • v654 (100) = NilCheck <void> v6 v751
      • v655 (100) = OffPtr <*int> [8] v6
      • v656 (100) = Load <int> v618 v751
      • v658 (100) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v639 v643 v619 v751
      • v659 (100) = SelectN <mem> [1] v658
      • v660 (100) = SelectN <bool> [0] v658
    • If v660b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v667 (+101) = NilCheck <void> v8 v704
      • v668 (101) = OffPtr <*uint8> [81] v8
      • v669 (101) = Load <uint8> v668 v704
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v608 v670
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v595 v704
      • v691 (18) = Add64 <uintptr> v674 v671
      • v675 (18) = Add64 <uintptr> v691 v148
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v685 (+18) = OffPtr <unsafe.Pointer> [16] v752 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v687 (+95) = Add64 <uintptr> v608 v173 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v694 (+210) = NilCheck <void> v8 v751
      • v695 (210) = OffPtr <*uint16> [82] v8
      • v696 (210) = Load <uint16> v525 v751
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v699 (210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v595 v751
      • v689 (18) = Add64 <uintptr> v700 v697
      • v701 (18) = Add64 <uintptr> v690 v689
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = NilCheck <void> v702 v751
      • v707 (210) = Load <*bmap> v702 v751 (~R0[*bmap], b[*bmap])
    • Plainb90 (+94)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v255
  • name p[unsafe.Pointer]: v334
  • name ~R0[unsafe.Pointer]: v344
  • name p[unsafe.Pointer]: v349
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v595 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name ~R0[bool]: v580
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name ~R0[unsafe.Pointer]: v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • phiopt [4036 ns]

    gcse deadcode [75480 ns]

    b1 b1 If b2 b2 If b1->b2 0 b5 b5 Ret b1->b5 1 b2->b5 0 b4 b4 If b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 If b4->b8 1 b7->b8 0 b10 b10 If b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 If b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 If b14->b15 0 b16 b16 If b15->b16 0 b18 b18 Ret b15->b18 1 b25 b25 If b16->b25 0 b20 b20 If b16->b20 1 b19 b19 If b19->b25 0 b24 b24 If b19->b24 1 b20->b19 0 b22 b22 Exit b20->b22 1 b34 b34 Ret b24->b34 0 b30 b30 If b24->b30 1 b28 b28 If b25->b28 0 b29 b29 Exit b25->b29 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 If b37->b38 0 b39 b39 If b38->b39 0 b41 b41 If b38->b41 1 b48 b48 If b39->b48 0 b43 b43 If b39->b43 1 b68 b68 If b41->b68 0 b66 b66 Ret b41->b66 1 b42 b42 If b42->b48 0 b47 b47 If b42->b47 1 b43->b42 0 b45 b45 Exit b43->b45 1 b55 b55 Ret b47->b55 0 b53 b53 If b47->b53 1 b51 b51 If b48->b51 0 b52 b52 Exit b48->b52 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 If b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 If b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 If b75->b78 0 b76 b76 If b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b81 b81 If b78->b81 0 b80 b80 Plain b78->b80 1 b80->b81 0 b84 b84 If b81->b84 0 b86 b86 Plain b81->b86 1 b85 b85 Plain b84->b85 0 b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b90 b90 If b89->b90 0 b95 b95 Plain b90->b95 0 b93 b93 Ret b90->b93 1 b96 b96 If b95->b96 0 b97 b97 If b96->b97 0 b113 b113 Plain b96->b113 1 b105 b105 Plain b97->b105 0 b101 b101 If b97->b101 1 b100 b100 If b100->b105 0 b104 b104 If b100->b104 1 b101->b100 0 b103 b103 Exit b101->b103 1 b110 b110 Ret b104->b110 0 b106 b106 If b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (~R0[*stringStruct], p[unsafe.Pointer], key[*stringStruct], sp[*string])
      • v8 (13) = Arg <*abi.MapType> {t} (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = Arg <*hmap> {h} (h[*hmap], h[*hmap])
      • v10 (13) = Arg <string> {ky}
      • v11 (+13) = Store <mem> {string} v6 v10 v1
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (x[uintptr], keymaybe[uintptr], x[uintptr], x[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v95 (?) = Const64 <int> [8]
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v173 (?) = Const64 <uintptr> [1]
      • v282 (?) = Const64 <uint> [8]
      • v291 (?) = Const64 <uint> [16]
      • v300 (?) = Const64 <uint> [24]
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v717 (+18) = IsNonNil <bool> v9
      • v661 (?) = Addr <*uint8> {go:string."concurrent map read and map write"} v3
      • v581 (?) = Const64 <int> [33]
      • v627 (62) = Const64 <uintptr> [-4]
      • v601 (+72) = Const64 <uintptr> [4]
      • v729 (+192) = Const64 <uintptr> [-1]
      • v690 (210) = Const64 <uintptr> [-8]
      • v38 (?) = StringMake <string> v661 v581
    • If v717b2 b5 (18)
    • b2: ← b1
      • v17 (18) = NilCheck <void> v9 v11
      • v18 (18) = OffPtr <*int> [0] v9
      • v19 (18) = Load <int> v18 v11
      • v21 (18) = Eq64 <bool> v19 v20
    • If v21b5 b4 (18)
    • b4: ← b2
      • v31 (+21) = NilCheck <void> v9 v11
      • v32 (21) = OffPtr <*uint8> [8] v9
      • v33 (21) = Load <uint8> v32 v11
      • v35 (21) = And8 <uint8> v34 v33
      • v37 (21) = Neq8 <bool> v36 v35
    • If v37b7 b8 (21)
    • b5: ← b2 b1
      • v25 (19) = OffPtr <*byte> [0] v23
      • v27 (+19) = MakeResult <unsafe.Pointer,mem> v25 v11
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = StaticLECall <mem> {AuxCall{runtime.fatal}} [16] v38 v11
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v11 v41
      • v49 (+25) = NilCheck <void> v9 v42
      • v50 (25) = OffPtr <*uint8> [9] v9
      • v51 (25) = Load <uint8> v50 v42
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v55 (+27) = NilCheck <void> v9 v42
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v9
      • v57 (27) = Load <unsafe.Pointer> v56 v42 (b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer])
      • v60 (+28) = NilCheck <void> v6 v42
      • v61 (28) = OffPtr <*int> [8] v6
      • v62 (28) = Load <int> v61 v42
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v73 (+18) = OffPtr <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v78 (+30) = Less64U <bool> v77 v69
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v82 (+32) = NilCheck <void> v816 v810
      • v83 (32) = OffPtr <*int> [8] v816
      • v84 (32) = Load <int> v83 v810
      • v86 (32) = NilCheck <void> v6 v810
      • v88 (32) = Load <int> v61 v810
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b25 b20 (32)
    • b18: ← b15 b27
      • v177 (42) = OffPtr <*byte> [0] v23
      • v179 (+42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b20
      • v99 (32) = AddPtr <*uint8> v93 v77
      • v101 (32) = Load <uint8> v99 v810 (x[uint8])
      • v102 (32) = InlMark <void> [5608] v810
      • v104 (+113) = Leq8U <bool> v101 v103 (~R0[bool])
    • If v104b25 b24 (+32)
    • b20: ← b16
      • v92 (32) = NilCheck <void> v57 v810
      • v93 (32) = OffPtr <*[8]uint8> [0] v57
      • v96 (32) = IsInBounds <bool> v77 v95
    • If v96b19 b22 (likely) (32)
    • b22: ← b20
      • v98 (32) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v98 (32)
    • b24: ← b19
      • v121 (+38) = NilCheck <void> v816 v810
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v123 (38) = Load <unsafe.Pointer> v122 v810
      • v125 (38) = NilCheck <void> v6 v810
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v127 (38) = Load <unsafe.Pointer> v126 v810
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b34 b30 (38)
    • b25: ← b19 b16
      • v109 (+33) = NilCheck <void> v57 v810
      • v110 (33) = OffPtr <*[8]uint8> [0] v57
      • v112 (33) = IsInBounds <bool> v77 v95
    • If v112b28 b29 (likely) (33)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b25
      • v115 (33) = AddPtr <*uint8> v110 v77
      • v117 (33) = Load <uint8> v115 v810
      • v118 (33) = Eq8 <bool> v36 v117
    • If v118b27 b26 (33)
    • b29: ← b25
      • v114 (33) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v114 (33)
    • b30: ← b24
      • v131 (38) = NilCheck <void> v816 v810
      • v135 (38) = NilCheck <void> v6 v810
      • v138 (38) = NilCheck <void> v6 v810
      • v142 (38) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v123 v127 v88 v810
      • v143 (38) = SelectN <mem> [1] v142
      • v144 (38) = SelectN <bool> [0] v142
    • If v144b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v152 (+39) = NilCheck <void> v8 v703
      • v153 (39) = OffPtr <*uint8> [81] v8
      • v154 (39) = Load <uint8> v153 v703
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v77 v155
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v688 (18) = Add64 <uintptr> v159 v156
      • v160 (18) = Add64 <uintptr> v688 v148
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v171 (+18) = OffPtr <unsafe.Pointer> [16] v816 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v174 (+30) = Add64 <uintptr> v173 v77 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v188 (+18) = OffPtr <unsafe.Pointer> [8] v57 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (i[uintptr], keymaybe[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (p[unsafe.Pointer], kptr[unsafe.Pointer], k[*stringStruct])
      • v192 (+46) = Less64U <bool> v191 v69
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v196 (+48) = NilCheck <void> v794 v42
      • v197 (48) = OffPtr <*int> [8] v794
      • v198 (48) = Load <int> v197 v42
      • v200 (48) = NilCheck <void> v6 v42
      • v203 (48) = Neq64 <bool> v198 v62
    • If v203b48 b43 (48)
    • b41: ← b38 b50
      • v431 (+71) = Neq64 <bool> v789 v69
    • If v431b68 b66 (71)
    • b42: ← b43
      • v212 (48) = AddPtr <*uint8> v207 v191
      • v214 (48) = Load <uint8> v212 v42 (x[uint8])
      • v215 (48) = InlMark <void> [5612] v42
      • v216 (+113) = Leq8U <bool> v214 v103 (~R0[bool])
    • If v216b48 b47 (+48)
    • b43: ← b39
      • v206 (48) = NilCheck <void> v57 v42
      • v207 (48) = OffPtr <*[8]uint8> [0] v57
      • v209 (48) = IsInBounds <bool> v191 v95
    • If v209b42 b45 (likely) (48)
    • b45: ← b43
      • v211 (48) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v211 (48)
    • b47: ← b42
      • v233 (+54) = NilCheck <void> v794 v42
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v794
      • v235 (54) = Load <unsafe.Pointer> v234 v42
      • v237 (54) = NilCheck <void> v6 v42
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v6
      • v239 (54) = Load <unsafe.Pointer> v238 v42
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b55 b53 (54)
    • b48: ← b42 b39
      • v221 (+49) = NilCheck <void> v57 v42
      • v222 (49) = OffPtr <*[8]uint8> [0] v57
      • v224 (49) = IsInBounds <bool> v191 v95
    • If v224b51 b52 (likely) (49)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b48
      • v227 (49) = AddPtr <*uint8> v222 v191
      • v229 (49) = Load <uint8> v227 v42
      • v230 (49) = Eq8 <bool> v36 v229
    • If v230b50 b49 (49)
    • b52: ← b48
      • v226 (49) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v226 (49)
    • b53: ← b47
      • v261 (+58) = NilCheck <void> v6 v42
      • v266 (58) = NilCheck <void> v794 v42
      • v270 (58) = NilCheck <void> v239 v42
      • v272 (58) = OffPtr <*byte> [0] v239
      • v273 (58) = Load <byte> v272 v42
      • v275 (58) = ZeroExt8to32 <uint32> v273
      • v276 (58) = NilCheck <void> v239 v42
      • v278 (58) = OffPtr <*byte> [1] v239
      • v279 (58) = Load <byte> v278 v42
      • v281 (58) = ZeroExt8to32 <uint32> v279
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v285 (58) = NilCheck <void> v239 v42
      • v287 (58) = OffPtr <*byte> [2] v239
      • v288 (58) = Load <byte> v287 v42
      • v290 (58) = ZeroExt8to32 <uint32> v288
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v294 (58) = NilCheck <void> v239 v42
      • v296 (58) = OffPtr <*byte> [3] v239
      • v297 (58) = Load <byte> v296 v42
      • v299 (58) = ZeroExt8to32 <uint32> v297
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v302 (58) = Or32 <uint32> v293 v301
      • v303 (58) = NilCheck <void> v235 v42
      • v304 (58) = OffPtr <*byte> [0] v235
      • v305 (58) = Load <byte> v304 v42
      • v307 (58) = ZeroExt8to32 <uint32> v305
      • v308 (58) = NilCheck <void> v235 v42
      • v309 (58) = OffPtr <*byte> [1] v235
      • v310 (58) = Load <byte> v309 v42
      • v312 (58) = ZeroExt8to32 <uint32> v310
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v315 (58) = NilCheck <void> v235 v42
      • v316 (58) = OffPtr <*byte> [2] v235
      • v317 (58) = Load <byte> v316 v42
      • v319 (58) = ZeroExt8to32 <uint32> v317
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v322 (58) = NilCheck <void> v235 v42
      • v323 (58) = OffPtr <*byte> [3] v235
      • v324 (58) = Load <byte> v323 v42
      • v326 (58) = ZeroExt8to32 <uint32> v324
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v328 (58) = Or32 <uint32> v321 v327
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = NilCheck <void> v8 v42
      • v247 (55) = OffPtr <*uint8> [81] v8
      • v248 (55) = Load <uint8> v247 v42
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v249 v191
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v635 (18) = Add64 <uintptr> v250 v253
      • v254 (18) = Add64 <uintptr> v635 v148
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v332 (+62) = NilCheck <void> v6 v42
      • v335 (62) = NilCheck <void> v6 v42
      • v341 (62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v239 v42
      • v347 (+62) = NilCheck <void> v794 v42
      • v351 (62) = NilCheck <void> v6 v42
      • v356 (62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v235 v42
      • v625 (18) = Add64 <uintptr> v357 v62
      • v632 (18) = Add64 <uintptr> v342 v62
      • v343 (18) = Add64 <uintptr> v632 v627
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v358 (18) = Add64 <uintptr> v627 v625
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = NilCheck <void> v344 v42
      • v366 (62) = OffPtr <*byte> [0] v344
      • v367 (62) = Load <byte> v366 v42
      • v369 (62) = ZeroExt8to32 <uint32> v367
      • v370 (62) = NilCheck <void> v344 v42
      • v371 (62) = OffPtr <*byte> [1] v344
      • v372 (62) = Load <byte> v371 v42
      • v374 (62) = ZeroExt8to32 <uint32> v372
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v377 (62) = NilCheck <void> v344 v42
      • v378 (62) = OffPtr <*byte> [2] v344
      • v379 (62) = Load <byte> v378 v42
      • v381 (62) = ZeroExt8to32 <uint32> v379
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v382 v376
      • v384 (62) = NilCheck <void> v344 v42
      • v385 (62) = OffPtr <*byte> [3] v344
      • v386 (62) = Load <byte> v385 v42
      • v388 (62) = ZeroExt8to32 <uint32> v386
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v390 (62) = Or32 <uint32> v389 v383
      • v391 (62) = NilCheck <void> v359 v42
      • v392 (62) = OffPtr <*byte> [0] v359
      • v393 (62) = Load <byte> v392 v42
      • v395 (62) = ZeroExt8to32 <uint32> v393
      • v396 (62) = NilCheck <void> v359 v42
      • v397 (62) = OffPtr <*byte> [1] v359
      • v398 (62) = Load <byte> v397 v42
      • v400 (62) = ZeroExt8to32 <uint32> v398
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v403 (62) = NilCheck <void> v359 v42
      • v404 (62) = OffPtr <*byte> [2] v359
      • v405 (62) = Load <byte> v404 v42
      • v407 (62) = ZeroExt8to32 <uint32> v405
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v408 v402
      • v410 (62) = NilCheck <void> v359 v42
      • v411 (62) = OffPtr <*byte> [3] v359
      • v412 (62) = Load <byte> v411 v42
      • v414 (62) = ZeroExt8to32 <uint32> v412
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v416 (62) = Or32 <uint32> v415 v409
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v419 (+65) = Neq64 <bool> v789 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v426 (+18) = OffPtr <unsafe.Pointer> [16] v794 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v428 (+46) = Add64 <uintptr> v173 v191 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (77) = OffPtr <*byte> [0] v23
      • v482 (+77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v437 (+72) = Lsh64x64 <uintptr> [false] v789 v601
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v451 (73) = NilCheck <void> v6 v42
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v6
      • v453 (73) = Load <unsafe.Pointer> v452 v42
      • v454 (73) = NilCheck <void> v6 v42
      • v741 (18) = Add64 <uintptr> v437 v441
      • v442 (18) = Add64 <uintptr> v69 v741
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v447 (+73) = NilCheck <void> v443 v42
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v443
      • v449 (73) = Load <unsafe.Pointer> v448 v42
      • v458 (73) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v62 v42
      • v459 (73) = SelectN <mem> [1] v458
      • v460 (73) = SelectN <bool> [0] v458
    • If v460b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = NilCheck <void> v8 v459
      • v467 (74) = OffPtr <*uint8> [81] v8
      • v468 (74) = Load <uint8> v467 v459
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v789 v469
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v734 (18) = Add64 <uintptr> v473 v470
      • v474 (18) = Add64 <uintptr> v734 v148
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v492 (+80) = NilCheck <void> v9 v42
      • v493 (80) = OffPtr <*uint32> [12] v9
      • v494 (80) = Load <uint32> v493 v42
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v497 (80) = NilCheck <void> v8 v42
      • v498 (+80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v8
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v42
      • v501 (80) = Load <uintptr> v499 v42
      • v502 (80) = ClosureLECall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v6 v495 v42
      • v503 (80) = SelectN <mem> [1] v502
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v505 (+81) = NilCheck <void> v9 v503
      • v507 (81) = Load <uint8> v50 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (+187) = And8 <uint8> v510 v507
      • v512 (187) = Lsh64x8 <uintptr> [false] v173 v511 (~R0[uintptr])
      • v514 (+192) = Add64 <uintptr> v729 v512 (~R0[uintptr], m[uintptr])
      • v518 (+82) = NilCheck <void> v9 v503
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v9
      • v520 (82) = Load <unsafe.Pointer> v519 v503 (p[unsafe.Pointer])
      • v522 (82) = And64 <uintptr> v514 v504
      • v524 (82) = NilCheck <void> v8 v503
      • v525 (82) = OffPtr <*uint16> [82] v8
      • v526 (82) = Load <uint16> v525 v503
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v529 (82) = InlMark <void> [5620] v503
      • v532 (+18) = AddPtr <unsafe.Pointer> v520 v528 (b[*bmap], ~R0[unsafe.Pointer])
      • v537 (+83) = NilCheck <void> v9 v503
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v9
      • v539 (83) = Load <unsafe.Pointer> v538 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v540 (83) = IsNonNil <bool> v539
    • If v540b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v588 (+197) = Rsh64Ux64 <uintptr> [false] v504 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (+198) = Less8U <bool> v589 v579
    • If v590b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v544 (+1128) = NilCheck <void> v9 v503
      • v546 (1128) = Load <uint8> v32 v503
      • v548 (1128) = And8 <uint8> v547 v546
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • If v549b81 b80 (+84)
    • b80: ← b78
      • v553 (+86) = Rsh64Ux64 <uintptr> [false] v514 v552 (m[uintptr])
    • Plainb81 (86)
    • b81: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v553 (m[uintptr])
      • v557 (+88) = And64 <uintptr> v556 v504
      • v560 (88) = NilCheck <void> v8 v503
      • v564 (88) = Mul64 <uintptr> v557 v527 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v568 (+18) = AddPtr <unsafe.Pointer> v539 v564 (b[*bmap], ~R0[unsafe.Pointer], b[*bmap], oldb[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v573 (+205) = NilCheck <void> v568 v503
      • v575 (205) = OffPtr <*uint8> [0] v568
      • v576 (205) = Load <uint8> v575 v503 (h[uint8])
      • v577 (+206) = Less8U <bool> v103 v576
    • If v577b84 b86 (206)
    • b84: ← b81
      • v580 (206) = Less8U <bool> v576 v579 (~R0[bool])
    • If v580b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84 b81
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = Add8 <uint8> v589 v579 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (top[uint8], ~R0[uint8], top[uint8])
    • Plainb90 (+94)
    • b90: ← b89 b113
      • v595 (94) = Phi <*bmap> v756 v707 (p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer])
      • v753 (105) = Phi <mem> v503 v751
      • v597 (+94) = IsNonNil <bool> v595
    • If v597b95 b93 (likely) (94)
    • b93: ← b90
      • v710 (105) = OffPtr <*byte> [0] v23
      • v712 (+105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v753
      • v602 (+218) = InlMark <void> [5633] v753
      • v605 (+18) = OffPtr <unsafe.Pointer> [8] v595 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v753 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v609 (+95) = Less64U <bool> v608 v69
    • If v609b97 b113 (likely) (95)
    • b97: ← b96
      • v613 (+97) = NilCheck <void> v752 v751
      • v614 (97) = OffPtr <*int> [8] v752
      • v615 (97) = Load <int> v614 v751
      • v617 (97) = NilCheck <void> v6 v751
      • v618 (97) = OffPtr <*int> [8] v6
      • v619 (97) = Load <int> v618 v751
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b105 b101 (97)
    • b100: ← b101
      • v629 (97) = AddPtr <*uint8> v624 v608
      • v631 (97) = Load <uint8> v629 v751
      • v633 (97) = Neq8 <bool> v593 v631
    • If v633b105 b104 (97)
    • b101: ← b97
      • v623 (97) = NilCheck <void> v595 v751
      • v624 (97) = OffPtr <*[8]uint8> [0] v595
      • v626 (97) = IsInBounds <bool> v608 v95
    • If v626b100 b103 (likely) (97)
    • b103: ← b101
      • v628 (97) = PanicBounds <mem> [1] v608 v95 v751
    • Exit v628 (97)
    • b104: ← b100
      • v637 (+100) = NilCheck <void> v752 v751
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v639 (100) = Load <unsafe.Pointer> v638 v751
      • v641 (100) = NilCheck <void> v6 v751
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v643 (100) = Load <unsafe.Pointer> v642 v751
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v647 (100) = NilCheck <void> v752 v751
      • v651 (100) = NilCheck <void> v6 v751
      • v654 (100) = NilCheck <void> v6 v751
      • v658 (100) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v639 v643 v619 v751
      • v659 (100) = SelectN <mem> [1] v658
      • v660 (100) = SelectN <bool> [0] v658
    • If v660b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v667 (+101) = NilCheck <void> v8 v704
      • v668 (101) = OffPtr <*uint8> [81] v8
      • v669 (101) = Load <uint8> v668 v704
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v608 v670
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v595 v704
      • v691 (18) = Add64 <uintptr> v674 v671
      • v675 (18) = Add64 <uintptr> v691 v148
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v685 (+18) = OffPtr <unsafe.Pointer> [16] v752 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v687 (+95) = Add64 <uintptr> v608 v173 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v694 (+210) = NilCheck <void> v8 v751
      • v696 (210) = Load <uint16> v525 v751
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v699 (210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v595 v751
      • v689 (18) = Add64 <uintptr> v700 v697
      • v701 (18) = Add64 <uintptr> v690 v689
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = NilCheck <void> v702 v751
      • v707 (210) = Load <*bmap> v702 v751 (b[*bmap], ~R0[*bmap])
    • Plainb90 (+94)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v255
  • name ~R0[unsafe.Pointer]: v344
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v595 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name ~R0[bool]: v580
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name ~R0[unsafe.Pointer]: v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • nilcheckelim [116758 ns]

    b1 b1 If b2 b2 If b1->b2 0 b5 b5 Ret b1->b5 1 b2->b5 0 b4 b4 If b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 If b4->b8 1 b7->b8 0 b10 b10 If b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 If b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 If b14->b15 0 b16 b16 If b15->b16 0 b18 b18 Ret b15->b18 1 b25 b25 If b16->b25 0 b20 b20 If b16->b20 1 b19 b19 If b19->b25 0 b24 b24 If b19->b24 1 b20->b19 0 b22 b22 Exit b20->b22 1 b34 b34 Ret b24->b34 0 b30 b30 If b24->b30 1 b28 b28 If b25->b28 0 b29 b29 Exit b25->b29 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 If b37->b38 0 b39 b39 If b38->b39 0 b41 b41 If b38->b41 1 b48 b48 If b39->b48 0 b43 b43 If b39->b43 1 b68 b68 If b41->b68 0 b66 b66 Ret b41->b66 1 b42 b42 If b42->b48 0 b47 b47 If b42->b47 1 b43->b42 0 b45 b45 Exit b43->b45 1 b55 b55 Ret b47->b55 0 b53 b53 If b47->b53 1 b51 b51 If b48->b51 0 b52 b52 Exit b48->b52 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 If b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 If b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 If b75->b78 0 b76 b76 If b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b81 b81 If b78->b81 0 b80 b80 Plain b78->b80 1 b80->b81 0 b84 b84 If b81->b84 0 b86 b86 Plain b81->b86 1 b85 b85 Plain b84->b85 0 b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b90 b90 If b89->b90 0 b95 b95 Plain b90->b95 0 b93 b93 Ret b90->b93 1 b96 b96 If b95->b96 0 b97 b97 If b96->b97 0 b113 b113 Plain b96->b113 1 b105 b105 Plain b97->b105 0 b101 b101 If b97->b101 1 b100 b100 If b100->b105 0 b104 b104 If b100->b104 1 b101->b100 0 b103 b103 Exit b101->b103 1 b110 b110 Ret b104->b110 0 b106 b106 If b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (~R0[*stringStruct], p[unsafe.Pointer], sp[*string], key[*stringStruct])
      • v8 (13) = Arg <*abi.MapType> {t} (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = Arg <*hmap> {h} (h[*hmap], h[*hmap])
      • v10 (13) = Arg <string> {ky}
      • v11 (+13) = Store <mem> {string} v6 v10 v1
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (x[uintptr], keymaybe[uintptr], x[uintptr], x[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v95 (?) = Const64 <int> [8]
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v173 (?) = Const64 <uintptr> [1]
      • v282 (?) = Const64 <uint> [8]
      • v291 (?) = Const64 <uint> [16]
      • v300 (?) = Const64 <uint> [24]
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v717 (+18) = IsNonNil <bool> v9
      • v661 (?) = Addr <*uint8> {go:string."concurrent map read and map write"} v3
      • v581 (?) = Const64 <int> [33]
      • v627 (62) = Const64 <uintptr> [-4]
      • v601 (+72) = Const64 <uintptr> [4]
      • v729 (+192) = Const64 <uintptr> [-1]
      • v690 (210) = Const64 <uintptr> [-8]
      • v38 (?) = StringMake <string> v661 v581
    • If v717b2 b5 (18)
    • b2: ← b1
      • v18 (18) = OffPtr <*int> [0] v9
      • v19 (18) = Load <int> v18 v11
      • v21 (18) = Eq64 <bool> v19 v20
    • If v21b5 b4 (18)
    • b4: ← b2
      • v32 (21) = OffPtr <*uint8> [8] v9
      • v33 (+21) = Load <uint8> v32 v11
      • v35 (21) = And8 <uint8> v34 v33
      • v37 (21) = Neq8 <bool> v36 v35
    • If v37b7 b8 (21)
    • b5: ← b2 b1
      • v25 (19) = OffPtr <*byte> [0] v23
      • v27 (+19) = MakeResult <unsafe.Pointer,mem> v25 v11
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = StaticLECall <mem> {AuxCall{runtime.fatal}} [16] v38 v11
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v11 v41
      • v50 (25) = OffPtr <*uint8> [9] v9
      • v51 (+25) = Load <uint8> v50 v42
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v9
      • v57 (+27) = Load <unsafe.Pointer> v56 v42 (p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer])
      • v61 (28) = OffPtr <*int> [8] v6
      • v62 (+28) = Load <int> v61 v42
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v73 (+18) = OffPtr <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (p[unsafe.Pointer], kptr[unsafe.Pointer], k[*stringStruct])
      • v78 (+30) = Less64U <bool> v77 v69
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v83 (32) = OffPtr <*int> [8] v816
      • v84 (+32) = Load <int> v83 v810
      • v88 (32) = Load <int> v61 v810
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b25 b20 (32)
    • b18: ← b15 b27
      • v177 (42) = OffPtr <*byte> [0] v23
      • v179 (+42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b20
      • v99 (32) = AddPtr <*uint8> v93 v77
      • v101 (32) = Load <uint8> v99 v810 (x[uint8])
      • v102 (32) = InlMark <void> [5608] v810
      • v104 (+113) = Leq8U <bool> v101 v103 (~R0[bool])
    • If v104b25 b24 (+32)
    • b20: ← b16
      • v92 (32) = NilCheck <void> v57 v810
      • v93 (32) = OffPtr <*[8]uint8> [0] v57
      • v96 (32) = IsInBounds <bool> v77 v95
    • If v96b19 b22 (likely) (32)
    • b22: ← b20
      • v98 (32) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v98 (32)
    • b24: ← b19
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v123 (+38) = Load <unsafe.Pointer> v122 v810
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v127 (38) = Load <unsafe.Pointer> v126 v810
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b34 b30 (38)
    • b25: ← b19 b16
      • v109 (+33) = NilCheck <void> v57 v810
      • v110 (33) = OffPtr <*[8]uint8> [0] v57
      • v112 (33) = IsInBounds <bool> v77 v95
    • If v112b28 b29 (likely) (33)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b25
      • v115 (33) = AddPtr <*uint8> v110 v77
      • v117 (33) = Load <uint8> v115 v810
      • v118 (33) = Eq8 <bool> v36 v117
    • If v118b27 b26 (33)
    • b29: ← b25
      • v114 (33) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v114 (33)
    • b30: ← b24
      • v142 (38) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v123 v127 v88 v810
      • v144 (38) = SelectN <bool> [0] v142
      • v143 (38) = SelectN <mem> [1] v142
    • If v144b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v153 (39) = OffPtr <*uint8> [81] v8
      • v152 (+39) = NilCheck <void> v8 v703
      • v154 (39) = Load <uint8> v153 v703
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v77 v155
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v688 (18) = Add64 <uintptr> v159 v156
      • v160 (18) = Add64 <uintptr> v688 v148
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v171 (+18) = OffPtr <unsafe.Pointer> [16] v816 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v174 (+30) = Add64 <uintptr> v173 v77 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v188 (+18) = OffPtr <unsafe.Pointer> [8] v57 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (i[uintptr], keymaybe[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v192 (+46) = Less64U <bool> v191 v69
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v197 (48) = OffPtr <*int> [8] v794
      • v198 (+48) = Load <int> v197 v42
      • v203 (48) = Neq64 <bool> v198 v62
    • If v203b48 b43 (48)
    • b41: ← b38 b50
      • v431 (+71) = Neq64 <bool> v789 v69
    • If v431b68 b66 (71)
    • b42: ← b43
      • v212 (48) = AddPtr <*uint8> v207 v191
      • v214 (48) = Load <uint8> v212 v42 (x[uint8])
      • v215 (48) = InlMark <void> [5612] v42
      • v216 (+113) = Leq8U <bool> v214 v103 (~R0[bool])
    • If v216b48 b47 (+48)
    • b43: ← b39
      • v206 (48) = NilCheck <void> v57 v42
      • v207 (48) = OffPtr <*[8]uint8> [0] v57
      • v209 (48) = IsInBounds <bool> v191 v95
    • If v209b42 b45 (likely) (48)
    • b45: ← b43
      • v211 (48) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v211 (48)
    • b47: ← b42
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v794
      • v235 (+54) = Load <unsafe.Pointer> v234 v42
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v6
      • v239 (54) = Load <unsafe.Pointer> v238 v42
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b55 b53 (54)
    • b48: ← b42 b39
      • v221 (+49) = NilCheck <void> v57 v42
      • v222 (49) = OffPtr <*[8]uint8> [0] v57
      • v224 (49) = IsInBounds <bool> v191 v95
    • If v224b51 b52 (likely) (49)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b48
      • v227 (49) = AddPtr <*uint8> v222 v191
      • v229 (49) = Load <uint8> v227 v42
      • v230 (49) = Eq8 <bool> v36 v229
    • If v230b50 b49 (49)
    • b52: ← b48
      • v226 (49) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v226 (49)
    • b53: ← b47
      • v270 (+58) = NilCheck <void> v239 v42
      • v272 (58) = OffPtr <*byte> [0] v239
      • v273 (58) = Load <byte> v272 v42
      • v275 (58) = ZeroExt8to32 <uint32> v273
      • v278 (58) = OffPtr <*byte> [1] v239
      • v279 (58) = Load <byte> v278 v42
      • v281 (58) = ZeroExt8to32 <uint32> v279
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v287 (58) = OffPtr <*byte> [2] v239
      • v288 (58) = Load <byte> v287 v42
      • v290 (58) = ZeroExt8to32 <uint32> v288
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v296 (58) = OffPtr <*byte> [3] v239
      • v297 (58) = Load <byte> v296 v42
      • v299 (58) = ZeroExt8to32 <uint32> v297
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v302 (58) = Or32 <uint32> v293 v301
      • v303 (58) = NilCheck <void> v235 v42
      • v304 (58) = OffPtr <*byte> [0] v235
      • v305 (58) = Load <byte> v304 v42
      • v307 (58) = ZeroExt8to32 <uint32> v305
      • v309 (58) = OffPtr <*byte> [1] v235
      • v310 (58) = Load <byte> v309 v42
      • v312 (58) = ZeroExt8to32 <uint32> v310
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v316 (58) = OffPtr <*byte> [2] v235
      • v317 (58) = Load <byte> v316 v42
      • v319 (58) = ZeroExt8to32 <uint32> v317
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v323 (58) = OffPtr <*byte> [3] v235
      • v324 (58) = Load <byte> v323 v42
      • v326 (58) = ZeroExt8to32 <uint32> v324
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v328 (58) = Or32 <uint32> v321 v327
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = NilCheck <void> v8 v42
      • v247 (55) = OffPtr <*uint8> [81] v8
      • v248 (55) = Load <uint8> v247 v42
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v249 v191
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v635 (18) = Add64 <uintptr> v250 v253
      • v254 (18) = Add64 <uintptr> v635 v148
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v341 (+62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v239 v42
      • v356 (+62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v235 v42
      • v625 (18) = Add64 <uintptr> v357 v62
      • v632 (18) = Add64 <uintptr> v342 v62
      • v343 (18) = Add64 <uintptr> v632 v627
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v358 (18) = Add64 <uintptr> v627 v625
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = NilCheck <void> v344 v42
      • v366 (62) = OffPtr <*byte> [0] v344
      • v367 (62) = Load <byte> v366 v42
      • v369 (62) = ZeroExt8to32 <uint32> v367
      • v371 (62) = OffPtr <*byte> [1] v344
      • v372 (62) = Load <byte> v371 v42
      • v374 (62) = ZeroExt8to32 <uint32> v372
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v378 (62) = OffPtr <*byte> [2] v344
      • v379 (62) = Load <byte> v378 v42
      • v381 (62) = ZeroExt8to32 <uint32> v379
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v382 v376
      • v385 (62) = OffPtr <*byte> [3] v344
      • v386 (62) = Load <byte> v385 v42
      • v388 (62) = ZeroExt8to32 <uint32> v386
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v390 (62) = Or32 <uint32> v389 v383
      • v391 (62) = NilCheck <void> v359 v42
      • v392 (62) = OffPtr <*byte> [0] v359
      • v393 (62) = Load <byte> v392 v42
      • v395 (62) = ZeroExt8to32 <uint32> v393
      • v397 (62) = OffPtr <*byte> [1] v359
      • v398 (62) = Load <byte> v397 v42
      • v400 (62) = ZeroExt8to32 <uint32> v398
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v404 (62) = OffPtr <*byte> [2] v359
      • v405 (62) = Load <byte> v404 v42
      • v407 (62) = ZeroExt8to32 <uint32> v405
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v408 v402
      • v411 (62) = OffPtr <*byte> [3] v359
      • v412 (62) = Load <byte> v411 v42
      • v414 (62) = ZeroExt8to32 <uint32> v412
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v416 (62) = Or32 <uint32> v415 v409
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v419 (+65) = Neq64 <bool> v789 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v426 (+18) = OffPtr <unsafe.Pointer> [16] v794 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v428 (+46) = Add64 <uintptr> v173 v191 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (77) = OffPtr <*byte> [0] v23
      • v482 (+77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v437 (+72) = Lsh64x64 <uintptr> [false] v789 v601
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v6
      • v453 (73) = Load <unsafe.Pointer> v452 v42
      • v741 (18) = Add64 <uintptr> v437 v441
      • v442 (18) = Add64 <uintptr> v69 v741
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v443
      • v449 (73) = Load <unsafe.Pointer> v448 v42
      • v458 (73) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v62 v42
      • v460 (73) = SelectN <bool> [0] v458
      • v459 (73) = SelectN <mem> [1] v458
      • v447 (+73) = NilCheck <void> v443 v42
    • If v460b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = NilCheck <void> v8 v459
      • v467 (74) = OffPtr <*uint8> [81] v8
      • v468 (74) = Load <uint8> v467 v459
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v789 v469
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v734 (18) = Add64 <uintptr> v473 v470
      • v474 (18) = Add64 <uintptr> v734 v148
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v497 (80) = NilCheck <void> v8 v42
      • v493 (80) = OffPtr <*uint32> [12] v9
      • v494 (+80) = Load <uint32> v493 v42
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v498 (+80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v8
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v42
      • v501 (80) = Load <uintptr> v499 v42
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v9
      • v525 (82) = OffPtr <*uint16> [82] v8
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v9
      • v502 (80) = ClosureLECall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v6 v495 v42
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v503 (80) = SelectN <mem> [1] v502
      • v507 (+81) = Load <uint8> v50 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (+187) = And8 <uint8> v510 v507
      • v512 (187) = Lsh64x8 <uintptr> [false] v173 v511 (~R0[uintptr])
      • v514 (+192) = Add64 <uintptr> v729 v512 (~R0[uintptr], m[uintptr])
      • v520 (+82) = Load <unsafe.Pointer> v519 v503 (p[unsafe.Pointer])
      • v522 (82) = And64 <uintptr> v514 v504
      • v526 (82) = Load <uint16> v525 v503
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v529 (82) = InlMark <void> [5620] v503
      • v532 (+18) = AddPtr <unsafe.Pointer> v520 v528 (b[*bmap], ~R0[unsafe.Pointer])
      • v539 (+83) = Load <unsafe.Pointer> v538 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v540 (83) = IsNonNil <bool> v539
    • If v540b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v588 (+197) = Rsh64Ux64 <uintptr> [false] v504 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (+198) = Less8U <bool> v589 v579
    • If v590b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v546 (+1128) = Load <uint8> v32 v503
      • v548 (1128) = And8 <uint8> v547 v546
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • If v549b81 b80 (+84)
    • b80: ← b78
      • v553 (+86) = Rsh64Ux64 <uintptr> [false] v514 v552 (m[uintptr])
    • Plainb81 (86)
    • b81: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v553 (m[uintptr])
      • v557 (+88) = And64 <uintptr> v556 v504
      • v564 (88) = Mul64 <uintptr> v557 v527 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v568 (+18) = AddPtr <unsafe.Pointer> v539 v564 (b[*bmap], ~R0[unsafe.Pointer], b[*bmap], oldb[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v575 (205) = OffPtr <*uint8> [0] v568
      • v576 (+205) = Load <uint8> v575 v503 (h[uint8])
      • v577 (+206) = Less8U <bool> v103 v576
    • If v577b84 b86 (206)
    • b84: ← b81
      • v580 (206) = Less8U <bool> v576 v579 (~R0[bool])
    • If v580b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84 b81
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = Add8 <uint8> v589 v579 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (top[uint8], ~R0[uint8], top[uint8])
    • Plainb90 (+94)
    • b90: ← b89 b113
      • v595 (94) = Phi <*bmap> v756 v707 (b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer])
      • v753 (105) = Phi <mem> v503 v751
      • v597 (+94) = IsNonNil <bool> v595
    • If v597b95 b93 (likely) (94)
    • b93: ← b90
      • v710 (105) = OffPtr <*byte> [0] v23
      • v712 (+105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v753
      • v602 (+218) = InlMark <void> [5633] v753
      • v605 (+18) = OffPtr <unsafe.Pointer> [8] v595 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v753 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v609 (+95) = Less64U <bool> v608 v69
    • If v609b97 b113 (likely) (95)
    • b97: ← b96
      • v614 (97) = OffPtr <*int> [8] v752
      • v615 (+97) = Load <int> v614 v751
      • v618 (97) = OffPtr <*int> [8] v6
      • v619 (97) = Load <int> v618 v751
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b105 b101 (97)
    • b100: ← b101
      • v629 (97) = AddPtr <*uint8> v624 v608
      • v631 (97) = Load <uint8> v629 v751
      • v633 (97) = Neq8 <bool> v593 v631
    • If v633b105 b104 (97)
    • b101: ← b97
      • v624 (97) = OffPtr <*[8]uint8> [0] v595
      • v626 (97) = IsInBounds <bool> v608 v95
    • If v626b100 b103 (likely) (97)
    • b103: ← b101
      • v628 (97) = PanicBounds <mem> [1] v608 v95 v751
    • Exit v628 (97)
    • b104: ← b100
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v639 (+100) = Load <unsafe.Pointer> v638 v751
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v643 (100) = Load <unsafe.Pointer> v642 v751
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v658 (100) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v639 v643 v619 v751
      • v660 (100) = SelectN <bool> [0] v658
      • v659 (100) = SelectN <mem> [1] v658
    • If v660b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v668 (101) = OffPtr <*uint8> [81] v8
      • v669 (+101) = Load <uint8> v668 v704
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v608 v670
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v595 v704
      • v691 (18) = Add64 <uintptr> v674 v671
      • v675 (18) = Add64 <uintptr> v691 v148
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v685 (+18) = OffPtr <unsafe.Pointer> [16] v752 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v687 (+95) = Add64 <uintptr> v608 v173 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v696 (+210) = Load <uint16> v525 v751
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v699 (210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v595 v751
      • v689 (18) = Add64 <uintptr> v700 v697
      • v701 (18) = Add64 <uintptr> v690 v689
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = NilCheck <void> v702 v751
      • v707 (210) = Load <*bmap> v702 v751 (~R0[*bmap], b[*bmap])
    • Plainb90 (+94)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v255
  • name ~R0[unsafe.Pointer]: v344
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v595 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name ~R0[bool]: v580
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name ~R0[unsafe.Pointer]: v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • prove [231045 ns]

    b1 b1 If b2 b2 If b1->b2 0 b5 b5 Ret b1->b5 1 b2->b5 0 b4 b4 If b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 If b4->b8 1 b7->b8 0 b10 b10 If b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 If b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 If b14->b15 0 b16 b16 If b15->b16 0 b18 b18 Ret b15->b18 1 b25 b25 First b16->b25 0 b20 b20 First b16->b20 1 b19 b19 If b19->b25 0 b24 b24 If b19->b24 1 b20->b19 0 b22 b22 Exit b20->b22 1 b34 b34 Ret b24->b34 0 b30 b30 If b24->b30 1 b28 b28 If b25->b28 0 b29 b29 Exit b25->b29 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 If b37->b38 0 b39 b39 If b38->b39 0 b41 b41 If b38->b41 1 b48 b48 First b39->b48 0 b43 b43 First b39->b43 1 b68 b68 If b41->b68 0 b66 b66 Ret b41->b66 1 b42 b42 If b42->b48 0 b47 b47 If b42->b47 1 b43->b42 0 b45 b45 Exit b43->b45 1 b55 b55 Ret b47->b55 0 b53 b53 If b47->b53 1 b51 b51 If b48->b51 0 b52 b52 Exit b48->b52 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 If b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 If b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 If b75->b78 0 b76 b76 If b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b81 b81 If b78->b81 0 b80 b80 Plain b78->b80 1 b80->b81 0 b84 b84 If b81->b84 0 b86 b86 Plain b81->b86 1 b85 b85 Plain b84->b85 0 b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b90 b90 If b89->b90 0 b95 b95 Plain b90->b95 0 b93 b93 Ret b90->b93 1 b96 b96 If b95->b96 0 b97 b97 If b96->b97 0 b113 b113 Plain b96->b113 1 b105 b105 Plain b97->b105 0 b101 b101 First b97->b101 1 b100 b100 If b100->b105 0 b104 b104 If b100->b104 1 b101->b100 0 b103 b103 Exit b101->b103 1 b110 b110 Ret b104->b110 0 b106 b106 If b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (~R0[*stringStruct], p[unsafe.Pointer], sp[*string], key[*stringStruct])
      • v8 (13) = Arg <*abi.MapType> {t} (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = Arg <*hmap> {h} (h[*hmap], h[*hmap])
      • v10 (13) = Arg <string> {ky}
      • v11 (+13) = Store <mem> {string} v6 v10 v1
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (x[uintptr], x[uintptr], x[uintptr], keymaybe[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v95 (?) = Const64 <int> [8]
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v173 (?) = Const64 <uintptr> [1]
      • v282 (?) = Const64 <uint> [8]
      • v291 (?) = Const64 <uint> [16]
      • v300 (?) = Const64 <uint> [24]
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v717 (+18) = IsNonNil <bool> v9
      • v661 (?) = Addr <*uint8> {go:string."concurrent map read and map write"} v3
      • v581 (?) = Const64 <int> [33]
      • v627 (62) = Const64 <uintptr> [-4]
      • v601 (+72) = Const64 <uintptr> [4]
      • v729 (+192) = Const64 <uintptr> [-1]
      • v690 (210) = Const64 <uintptr> [-8]
      • v573 (?) = Const64 <int64> [0]
      • v38 (?) = StringMake <string> v661 v581
    • If v717b2 b5 (18)
    • b2: ← b1
      • v18 (18) = OffPtr <*int> [0] v9
      • v19 (18) = Load <int> v18 v11
      • v21 (18) = Eq64 <bool> v19 v20
    • If v21b5 b4 (18)
    • b4: ← b2
      • v32 (21) = OffPtr <*uint8> [8] v9
      • v33 (+21) = Load <uint8> v32 v11
      • v35 (21) = And8 <uint8> v34 v33
      • v37 (21) = Neq8 <bool> v36 v35
    • If v37b7 b8 (21)
    • b5: ← b2 b1
      • v25 (19) = OffPtr <*byte> [0] v23
      • v27 (+19) = MakeResult <unsafe.Pointer,mem> v25 v11
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = StaticLECall <mem> {AuxCall{runtime.fatal}} [16] v38 v11
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v11 v41
      • v50 (25) = OffPtr <*uint8> [9] v9
      • v51 (+25) = Load <uint8> v50 v42
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v9
      • v57 (+27) = Load <unsafe.Pointer> v56 v42 (p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer])
      • v61 (28) = OffPtr <*int> [8] v6
      • v62 (+28) = Load <int> v61 v42
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v73 (+18) = OffPtr <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v78 (+30) = Less64U <bool> v77 v69
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v83 (32) = OffPtr <*int> [8] v816
      • v84 (+32) = Load <int> v83 v810
      • v88 (32) = Load <int> v61 v810
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b25 b20 (32)
    • b18: ← b15 b27
      • v177 (42) = OffPtr <*byte> [0] v23
      • v179 (+42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b20
      • v99 (32) = AddPtr <*uint8> v93 v77
      • v101 (32) = Load <uint8> v99 v810 (x[uint8])
      • v102 (32) = InlMark <void> [5608] v810
      • v104 (+113) = Leq8U <bool> v101 v103 (~R0[bool])
    • If v104b25 b24 (+32)
    • b20: ← b16
      • v92 (32) = NilCheck <void> v57 v810
      • v93 (32) = OffPtr <*[8]uint8> [0] v57
      • v96 (32) = IsInBounds <bool> v77 v95
    • Firstb19 b22 (likely) (32)
    • b22: ← b20
      • v98 (32) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v98 (32)
    • b24: ← b19
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v123 (+38) = Load <unsafe.Pointer> v122 v810
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v127 (38) = Load <unsafe.Pointer> v126 v810
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b34 b30 (38)
    • b25: ← b19 b16
      • v109 (+33) = NilCheck <void> v57 v810
      • v110 (33) = OffPtr <*[8]uint8> [0] v57
      • v112 (33) = IsInBounds <bool> v77 v95
    • Firstb28 b29 (likely) (33)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b25
      • v115 (33) = AddPtr <*uint8> v110 v77
      • v117 (33) = Load <uint8> v115 v810
      • v118 (33) = Eq8 <bool> v36 v117
    • If v118b27 b26 (33)
    • b29: ← b25
      • v114 (33) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v114 (33)
    • b30: ← b24
      • v142 (38) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v123 v127 v88 v810
      • v144 (38) = SelectN <bool> [0] v142
      • v143 (38) = SelectN <mem> [1] v142
    • If v144b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v153 (39) = OffPtr <*uint8> [81] v8
      • v152 (+39) = NilCheck <void> v8 v703
      • v154 (39) = Load <uint8> v153 v703
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v77 v155
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v688 (18) = Add64 <uintptr> v159 v156
      • v160 (18) = Add64 <uintptr> v688 v148
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v171 (+18) = OffPtr <unsafe.Pointer> [16] v816 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v174 (+30) = Add64 <uintptr> v173 v77 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v188 (+18) = OffPtr <unsafe.Pointer> [8] v57 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (i[uintptr], keymaybe[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (p[unsafe.Pointer], kptr[unsafe.Pointer], k[*stringStruct])
      • v192 (+46) = Less64U <bool> v191 v69
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v197 (48) = OffPtr <*int> [8] v794
      • v198 (+48) = Load <int> v197 v42
      • v203 (48) = Neq64 <bool> v198 v62
    • If v203b48 b43 (48)
    • b41: ← b38 b50
      • v431 (+71) = Neq64 <bool> v789 v69
    • If v431b68 b66 (71)
    • b42: ← b43
      • v212 (48) = AddPtr <*uint8> v207 v191
      • v214 (48) = Load <uint8> v212 v42 (x[uint8])
      • v215 (48) = InlMark <void> [5612] v42
      • v216 (+113) = Leq8U <bool> v214 v103 (~R0[bool])
    • If v216b48 b47 (+48)
    • b43: ← b39
      • v206 (48) = NilCheck <void> v57 v42
      • v207 (48) = OffPtr <*[8]uint8> [0] v57
      • v209 (48) = IsInBounds <bool> v191 v95
    • Firstb42 b45 (likely) (48)
    • b45: ← b43
      • v211 (48) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v211 (48)
    • b47: ← b42
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v794
      • v235 (+54) = Load <unsafe.Pointer> v234 v42
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v6
      • v239 (54) = Load <unsafe.Pointer> v238 v42
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b55 b53 (54)
    • b48: ← b42 b39
      • v221 (+49) = NilCheck <void> v57 v42
      • v222 (49) = OffPtr <*[8]uint8> [0] v57
      • v224 (49) = IsInBounds <bool> v191 v95
    • Firstb51 b52 (likely) (49)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b48
      • v227 (49) = AddPtr <*uint8> v222 v191
      • v229 (49) = Load <uint8> v227 v42
      • v230 (49) = Eq8 <bool> v36 v229
    • If v230b50 b49 (49)
    • b52: ← b48
      • v226 (49) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v226 (49)
    • b53: ← b47
      • v270 (+58) = NilCheck <void> v239 v42
      • v272 (58) = OffPtr <*byte> [0] v239
      • v273 (58) = Load <byte> v272 v42
      • v275 (58) = ZeroExt8to32 <uint32> v273
      • v278 (58) = OffPtr <*byte> [1] v239
      • v279 (58) = Load <byte> v278 v42
      • v281 (58) = ZeroExt8to32 <uint32> v279
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v287 (58) = OffPtr <*byte> [2] v239
      • v288 (58) = Load <byte> v287 v42
      • v290 (58) = ZeroExt8to32 <uint32> v288
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v296 (58) = OffPtr <*byte> [3] v239
      • v297 (58) = Load <byte> v296 v42
      • v299 (58) = ZeroExt8to32 <uint32> v297
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v302 (58) = Or32 <uint32> v293 v301
      • v303 (58) = NilCheck <void> v235 v42
      • v304 (58) = OffPtr <*byte> [0] v235
      • v305 (58) = Load <byte> v304 v42
      • v307 (58) = ZeroExt8to32 <uint32> v305
      • v309 (58) = OffPtr <*byte> [1] v235
      • v310 (58) = Load <byte> v309 v42
      • v312 (58) = ZeroExt8to32 <uint32> v310
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v316 (58) = OffPtr <*byte> [2] v235
      • v317 (58) = Load <byte> v316 v42
      • v319 (58) = ZeroExt8to32 <uint32> v317
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v323 (58) = OffPtr <*byte> [3] v235
      • v324 (58) = Load <byte> v323 v42
      • v326 (58) = ZeroExt8to32 <uint32> v324
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v328 (58) = Or32 <uint32> v321 v327
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = NilCheck <void> v8 v42
      • v247 (55) = OffPtr <*uint8> [81] v8
      • v248 (55) = Load <uint8> v247 v42
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v249 v191
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v635 (18) = Add64 <uintptr> v250 v253
      • v254 (18) = Add64 <uintptr> v635 v148
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v341 (+62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v239 v42
      • v356 (+62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v235 v42
      • v625 (18) = Add64 <uintptr> v357 v62
      • v632 (18) = Add64 <uintptr> v342 v62
      • v343 (18) = Add64 <uintptr> v632 v627
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v358 (18) = Add64 <uintptr> v627 v625
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = NilCheck <void> v344 v42
      • v366 (62) = OffPtr <*byte> [0] v344
      • v367 (62) = Load <byte> v366 v42
      • v369 (62) = ZeroExt8to32 <uint32> v367
      • v371 (62) = OffPtr <*byte> [1] v344
      • v372 (62) = Load <byte> v371 v42
      • v374 (62) = ZeroExt8to32 <uint32> v372
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v378 (62) = OffPtr <*byte> [2] v344
      • v379 (62) = Load <byte> v378 v42
      • v381 (62) = ZeroExt8to32 <uint32> v379
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v382 v376
      • v385 (62) = OffPtr <*byte> [3] v344
      • v386 (62) = Load <byte> v385 v42
      • v388 (62) = ZeroExt8to32 <uint32> v386
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v390 (62) = Or32 <uint32> v389 v383
      • v391 (62) = NilCheck <void> v359 v42
      • v392 (62) = OffPtr <*byte> [0] v359
      • v393 (62) = Load <byte> v392 v42
      • v395 (62) = ZeroExt8to32 <uint32> v393
      • v397 (62) = OffPtr <*byte> [1] v359
      • v398 (62) = Load <byte> v397 v42
      • v400 (62) = ZeroExt8to32 <uint32> v398
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v404 (62) = OffPtr <*byte> [2] v359
      • v405 (62) = Load <byte> v404 v42
      • v407 (62) = ZeroExt8to32 <uint32> v405
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v408 v402
      • v411 (62) = OffPtr <*byte> [3] v359
      • v412 (62) = Load <byte> v411 v42
      • v414 (62) = ZeroExt8to32 <uint32> v412
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v416 (62) = Or32 <uint32> v415 v409
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v419 (+65) = Neq64 <bool> v789 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v426 (+18) = OffPtr <unsafe.Pointer> [16] v794 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v428 (+46) = Add64 <uintptr> v173 v191 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (77) = OffPtr <*byte> [0] v23
      • v482 (+77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v437 (+72) = Lsh64x64 <uintptr> [false] v789 v601
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v6
      • v453 (73) = Load <unsafe.Pointer> v452 v42
      • v741 (18) = Add64 <uintptr> v437 v441
      • v442 (18) = Add64 <uintptr> v69 v741
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v443
      • v449 (73) = Load <unsafe.Pointer> v448 v42
      • v458 (73) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v62 v42
      • v460 (73) = SelectN <bool> [0] v458
      • v459 (73) = SelectN <mem> [1] v458
      • v447 (+73) = NilCheck <void> v443 v42
    • If v460b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = NilCheck <void> v8 v459
      • v467 (74) = OffPtr <*uint8> [81] v8
      • v468 (74) = Load <uint8> v467 v459
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v789 v469
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v734 (18) = Add64 <uintptr> v473 v470
      • v474 (18) = Add64 <uintptr> v734 v148
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v497 (80) = NilCheck <void> v8 v42
      • v493 (80) = OffPtr <*uint32> [12] v9
      • v494 (+80) = Load <uint32> v493 v42
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v498 (+80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v8
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v42
      • v501 (80) = Load <uintptr> v499 v42
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v9
      • v525 (82) = OffPtr <*uint16> [82] v8
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v9
      • v502 (80) = ClosureLECall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v6 v495 v42
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v503 (80) = SelectN <mem> [1] v502
      • v507 (+81) = Load <uint8> v50 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (+187) = And8 <uint8> v510 v507
      • v512 (187) = Lsh64x8 <uintptr> [true] v173 v511 (~R0[uintptr])
      • v514 (+192) = Add64 <uintptr> v729 v512 (m[uintptr], ~R0[uintptr])
      • v520 (+82) = Load <unsafe.Pointer> v519 v503 (p[unsafe.Pointer])
      • v522 (82) = And64 <uintptr> v514 v504
      • v526 (82) = Load <uint16> v525 v503
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v529 (82) = InlMark <void> [5620] v503
      • v532 (+18) = AddPtr <unsafe.Pointer> v520 v528 (b[*bmap], ~R0[unsafe.Pointer])
      • v539 (+83) = Load <unsafe.Pointer> v538 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v540 (83) = IsNonNil <bool> v539
    • If v540b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v588 (+197) = Rsh64Ux64 <uintptr> [false] v504 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (+198) = Less8U <bool> v589 v579
    • If v590b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v546 (+1128) = Load <uint8> v32 v503
      • v548 (1128) = And8 <uint8> v547 v546
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • If v549b81 b80 (+84)
    • b80: ← b78
      • v553 (+86) = Rsh64Ux64 <uintptr> [false] v514 v552 (m[uintptr])
    • Plainb81 (86)
    • b81: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v553 (m[uintptr])
      • v557 (+88) = And64 <uintptr> v556 v504
      • v564 (88) = Mul64 <uintptr> v557 v527 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v568 (+18) = AddPtr <unsafe.Pointer> v539 v564 (b[*bmap], ~R0[unsafe.Pointer], b[*bmap], oldb[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v575 (205) = OffPtr <*uint8> [0] v568
      • v576 (+205) = Load <uint8> v575 v503 (h[uint8])
      • v577 (+206) = Less8U <bool> v103 v576
    • If v577b84 b86 (206)
    • b84: ← b81
      • v580 (206) = Less8U <bool> v576 v579 (~R0[bool])
    • If v580b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84 b81
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = Add8 <uint8> v589 v579 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (~R0[uint8], top[uint8], top[uint8])
    • Plainb90 (+94)
    • b90: ← b89 b113
      • v595 (94) = Phi <*bmap> v756 v707 (b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer])
      • v753 (105) = Phi <mem> v503 v751
      • v597 (+94) = IsNonNil <bool> v595
    • If v597b95 b93 (likely) (94)
    • b93: ← b90
      • v710 (105) = OffPtr <*byte> [0] v23
      • v712 (+105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v753
      • v602 (+218) = InlMark <void> [5633] v753
      • v605 (+18) = OffPtr <unsafe.Pointer> [8] v595 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v753 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (p[unsafe.Pointer], k[*stringStruct], kptr[unsafe.Pointer])
      • v609 (+95) = Less64U <bool> v608 v69
    • If v609b97 b113 (likely) (95)
    • b97: ← b96
      • v614 (97) = OffPtr <*int> [8] v752
      • v615 (+97) = Load <int> v614 v751
      • v618 (97) = OffPtr <*int> [8] v6
      • v619 (97) = Load <int> v618 v751
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b105 b101 (97)
    • b100: ← b101
      • v629 (97) = AddPtr <*uint8> v624 v608
      • v631 (97) = Load <uint8> v629 v751
      • v633 (97) = Neq8 <bool> v593 v631
    • If v633b105 b104 (97)
    • b101: ← b97
      • v624 (97) = OffPtr <*[8]uint8> [0] v595
      • v626 (97) = IsInBounds <bool> v608 v95
    • Firstb100 b103 (likely) (97)
    • b103: ← b101
      • v628 (97) = PanicBounds <mem> [1] v608 v95 v751
    • Exit v628 (97)
    • b104: ← b100
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v639 (+100) = Load <unsafe.Pointer> v638 v751
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v643 (100) = Load <unsafe.Pointer> v642 v751
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v658 (100) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v639 v643 v619 v751
      • v660 (100) = SelectN <bool> [0] v658
      • v659 (100) = SelectN <mem> [1] v658
    • If v660b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v668 (101) = OffPtr <*uint8> [81] v8
      • v669 (+101) = Load <uint8> v668 v704
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v608 v670
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v595 v704
      • v691 (18) = Add64 <uintptr> v674 v671
      • v675 (18) = Add64 <uintptr> v691 v148
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v685 (+18) = OffPtr <unsafe.Pointer> [16] v752 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v687 (+95) = Add64 <uintptr> v608 v173 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v696 (+210) = Load <uint16> v525 v751
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v699 (210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v595 v751
      • v689 (18) = Add64 <uintptr> v700 v697
      • v701 (18) = Add64 <uintptr> v690 v689
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = NilCheck <void> v702 v751
      • v707 (210) = Load <*bmap> v702 v751 (~R0[*bmap], b[*bmap])
    • Plainb90 (+94)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v255
  • name ~R0[unsafe.Pointer]: v344
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v595 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name ~R0[bool]: v580
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name ~R0[unsafe.Pointer]: v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • early fuse [7488 ns]

    b1 b1 If b2 b2 If b1->b2 0 b5 b5 Ret b1->b5 1 b2->b5 0 b4 b4 If b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 If b4->b8 1 b7->b8 0 b10 b10 If b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 If b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 If b14->b15 0 b16 b16 If b15->b16 0 b18 b18 Ret b15->b18 1 b25 b25 First b16->b25 0 b20 b20 First b16->b20 1 b19 b19 If b19->b25 0 b24 b24 If b19->b24 1 b20->b19 0 b22 b22 Exit b20->b22 1 b34 b34 Ret b24->b34 0 b30 b30 If b24->b30 1 b28 b28 If b25->b28 0 b29 b29 Exit b25->b29 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 If b37->b38 0 b39 b39 If b38->b39 0 b41 b41 If b38->b41 1 b48 b48 First b39->b48 0 b43 b43 First b39->b43 1 b68 b68 If b41->b68 0 b66 b66 Ret b41->b66 1 b42 b42 If b42->b48 0 b47 b47 If b42->b47 1 b43->b42 0 b45 b45 Exit b43->b45 1 b55 b55 Ret b47->b55 0 b53 b53 If b47->b53 1 b51 b51 If b48->b51 0 b52 b52 Exit b48->b52 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 If b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 If b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 If b75->b78 0 b76 b76 If b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b84 b84 If b78->b84 0 b80 b80 Plain b78->b80 1 b80->b84 0 b85 b85 Plain b84->b85 0 b86 b86 Plain b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b90 b90 If b89->b90 0 b95 b95 Plain b90->b95 0 b93 b93 Ret b90->b93 1 b96 b96 If b95->b96 0 b97 b97 If b96->b97 0 b113 b113 Plain b96->b113 1 b105 b105 Plain b97->b105 0 b101 b101 First b97->b101 1 b100 b100 If b100->b105 0 b104 b104 If b100->b104 1 b101->b100 0 b103 b103 Exit b101->b103 1 b110 b110 Ret b104->b110 0 b106 b106 If b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (p[unsafe.Pointer], sp[*string], key[*stringStruct], ~R0[*stringStruct])
      • v8 (13) = Arg <*abi.MapType> {t} (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = Arg <*hmap> {h} (h[*hmap], h[*hmap])
      • v10 (13) = Arg <string> {ky}
      • v11 (+13) = Store <mem> {string} v6 v10 v1
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (x[uintptr], x[uintptr], keymaybe[uintptr], x[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v95 (?) = Const64 <int> [8]
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v173 (?) = Const64 <uintptr> [1]
      • v282 (?) = Const64 <uint> [8]
      • v291 (?) = Const64 <uint> [16]
      • v300 (?) = Const64 <uint> [24]
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v717 (+18) = IsNonNil <bool> v9
      • v661 (?) = Addr <*uint8> {go:string."concurrent map read and map write"} v3
      • v581 (?) = Const64 <int> [33]
      • v627 (62) = Const64 <uintptr> [-4]
      • v601 (+72) = Const64 <uintptr> [4]
      • v729 (+192) = Const64 <uintptr> [-1]
      • v690 (210) = Const64 <uintptr> [-8]
      • v573 (?) = Const64 <int64> [0]
      • v38 (?) = StringMake <string> v661 v581
    • If v717b2 b5 (18)
    • b2: ← b1
      • v18 (18) = OffPtr <*int> [0] v9
      • v19 (18) = Load <int> v18 v11
      • v21 (18) = Eq64 <bool> v19 v20
    • If v21b5 b4 (18)
    • b4: ← b2
      • v32 (21) = OffPtr <*uint8> [8] v9
      • v33 (+21) = Load <uint8> v32 v11
      • v35 (21) = And8 <uint8> v34 v33
      • v37 (21) = Neq8 <bool> v36 v35
    • If v37b7 b8 (21)
    • b5: ← b2 b1
      • v25 (19) = OffPtr <*byte> [0] v23
      • v27 (+19) = MakeResult <unsafe.Pointer,mem> v25 v11
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = StaticLECall <mem> {AuxCall{runtime.fatal}} [16] v38 v11
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v11 v41
      • v50 (25) = OffPtr <*uint8> [9] v9
      • v51 (+25) = Load <uint8> v50 v42
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v9
      • v57 (+27) = Load <unsafe.Pointer> v56 v42 (p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap])
      • v61 (28) = OffPtr <*int> [8] v6
      • v62 (+28) = Load <int> v61 v42
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v73 (+18) = OffPtr <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (p[unsafe.Pointer], kptr[unsafe.Pointer], k[*stringStruct])
      • v78 (+30) = Less64U <bool> v77 v69
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v83 (32) = OffPtr <*int> [8] v816
      • v84 (+32) = Load <int> v83 v810
      • v88 (32) = Load <int> v61 v810
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b25 b20 (32)
    • b18: ← b15 b27
      • v177 (42) = OffPtr <*byte> [0] v23
      • v179 (+42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b20
      • v99 (32) = AddPtr <*uint8> v93 v77
      • v101 (32) = Load <uint8> v99 v810 (x[uint8])
      • v102 (32) = InlMark <void> [5608] v810
      • v104 (+113) = Leq8U <bool> v101 v103 (~R0[bool])
    • If v104b25 b24 (+32)
    • b20: ← b16
      • v92 (32) = NilCheck <void> v57 v810
      • v93 (32) = OffPtr <*[8]uint8> [0] v57
      • v96 (32) = IsInBounds <bool> v77 v95
    • Firstb19 b22 (likely) (32)
    • b22: ← b20
      • v98 (32) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v98 (32)
    • b24: ← b19
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v123 (+38) = Load <unsafe.Pointer> v122 v810
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v127 (38) = Load <unsafe.Pointer> v126 v810
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b34 b30 (38)
    • b25: ← b19 b16
      • v109 (+33) = NilCheck <void> v57 v810
      • v110 (33) = OffPtr <*[8]uint8> [0] v57
      • v112 (33) = IsInBounds <bool> v77 v95
    • Firstb28 b29 (likely) (33)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b25
      • v115 (33) = AddPtr <*uint8> v110 v77
      • v117 (33) = Load <uint8> v115 v810
      • v118 (33) = Eq8 <bool> v36 v117
    • If v118b27 b26 (33)
    • b29: ← b25
      • v114 (33) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v114 (33)
    • b30: ← b24
      • v142 (38) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v123 v127 v88 v810
      • v144 (38) = SelectN <bool> [0] v142
      • v143 (38) = SelectN <mem> [1] v142
    • If v144b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v153 (39) = OffPtr <*uint8> [81] v8
      • v152 (+39) = NilCheck <void> v8 v703
      • v154 (39) = Load <uint8> v153 v703
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v77 v155
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v688 (18) = Add64 <uintptr> v159 v156
      • v160 (18) = Add64 <uintptr> v688 v148
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v171 (+18) = OffPtr <unsafe.Pointer> [16] v816 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v174 (+30) = Add64 <uintptr> v173 v77 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v188 (+18) = OffPtr <unsafe.Pointer> [8] v57 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (i[uintptr], keymaybe[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v192 (+46) = Less64U <bool> v191 v69
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v197 (48) = OffPtr <*int> [8] v794
      • v198 (+48) = Load <int> v197 v42
      • v203 (48) = Neq64 <bool> v198 v62
    • If v203b48 b43 (48)
    • b41: ← b38 b50
      • v431 (+71) = Neq64 <bool> v789 v69
    • If v431b68 b66 (71)
    • b42: ← b43
      • v212 (48) = AddPtr <*uint8> v207 v191
      • v214 (48) = Load <uint8> v212 v42 (x[uint8])
      • v215 (48) = InlMark <void> [5612] v42
      • v216 (+113) = Leq8U <bool> v214 v103 (~R0[bool])
    • If v216b48 b47 (+48)
    • b43: ← b39
      • v206 (48) = NilCheck <void> v57 v42
      • v207 (48) = OffPtr <*[8]uint8> [0] v57
      • v209 (48) = IsInBounds <bool> v191 v95
    • Firstb42 b45 (likely) (48)
    • b45: ← b43
      • v211 (48) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v211 (48)
    • b47: ← b42
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v794
      • v235 (+54) = Load <unsafe.Pointer> v234 v42
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v6
      • v239 (54) = Load <unsafe.Pointer> v238 v42
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b55 b53 (54)
    • b48: ← b42 b39
      • v221 (+49) = NilCheck <void> v57 v42
      • v222 (49) = OffPtr <*[8]uint8> [0] v57
      • v224 (49) = IsInBounds <bool> v191 v95
    • Firstb51 b52 (likely) (49)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b48
      • v227 (49) = AddPtr <*uint8> v222 v191
      • v229 (49) = Load <uint8> v227 v42
      • v230 (49) = Eq8 <bool> v36 v229
    • If v230b50 b49 (49)
    • b52: ← b48
      • v226 (49) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v226 (49)
    • b53: ← b47
      • v270 (+58) = NilCheck <void> v239 v42
      • v272 (58) = OffPtr <*byte> [0] v239
      • v273 (58) = Load <byte> v272 v42
      • v275 (58) = ZeroExt8to32 <uint32> v273
      • v278 (58) = OffPtr <*byte> [1] v239
      • v279 (58) = Load <byte> v278 v42
      • v281 (58) = ZeroExt8to32 <uint32> v279
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v287 (58) = OffPtr <*byte> [2] v239
      • v288 (58) = Load <byte> v287 v42
      • v290 (58) = ZeroExt8to32 <uint32> v288
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v296 (58) = OffPtr <*byte> [3] v239
      • v297 (58) = Load <byte> v296 v42
      • v299 (58) = ZeroExt8to32 <uint32> v297
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v302 (58) = Or32 <uint32> v293 v301
      • v303 (58) = NilCheck <void> v235 v42
      • v304 (58) = OffPtr <*byte> [0] v235
      • v305 (58) = Load <byte> v304 v42
      • v307 (58) = ZeroExt8to32 <uint32> v305
      • v309 (58) = OffPtr <*byte> [1] v235
      • v310 (58) = Load <byte> v309 v42
      • v312 (58) = ZeroExt8to32 <uint32> v310
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v316 (58) = OffPtr <*byte> [2] v235
      • v317 (58) = Load <byte> v316 v42
      • v319 (58) = ZeroExt8to32 <uint32> v317
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v323 (58) = OffPtr <*byte> [3] v235
      • v324 (58) = Load <byte> v323 v42
      • v326 (58) = ZeroExt8to32 <uint32> v324
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v328 (58) = Or32 <uint32> v321 v327
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = NilCheck <void> v8 v42
      • v247 (55) = OffPtr <*uint8> [81] v8
      • v248 (55) = Load <uint8> v247 v42
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v249 v191
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v635 (18) = Add64 <uintptr> v250 v253
      • v254 (18) = Add64 <uintptr> v635 v148
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v341 (+62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v239 v42
      • v356 (+62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v235 v42
      • v625 (18) = Add64 <uintptr> v357 v62
      • v632 (18) = Add64 <uintptr> v342 v62
      • v343 (18) = Add64 <uintptr> v632 v627
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v358 (18) = Add64 <uintptr> v627 v625
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = NilCheck <void> v344 v42
      • v366 (62) = OffPtr <*byte> [0] v344
      • v367 (62) = Load <byte> v366 v42
      • v369 (62) = ZeroExt8to32 <uint32> v367
      • v371 (62) = OffPtr <*byte> [1] v344
      • v372 (62) = Load <byte> v371 v42
      • v374 (62) = ZeroExt8to32 <uint32> v372
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v378 (62) = OffPtr <*byte> [2] v344
      • v379 (62) = Load <byte> v378 v42
      • v381 (62) = ZeroExt8to32 <uint32> v379
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v382 v376
      • v385 (62) = OffPtr <*byte> [3] v344
      • v386 (62) = Load <byte> v385 v42
      • v388 (62) = ZeroExt8to32 <uint32> v386
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v390 (62) = Or32 <uint32> v389 v383
      • v391 (62) = NilCheck <void> v359 v42
      • v392 (62) = OffPtr <*byte> [0] v359
      • v393 (62) = Load <byte> v392 v42
      • v395 (62) = ZeroExt8to32 <uint32> v393
      • v397 (62) = OffPtr <*byte> [1] v359
      • v398 (62) = Load <byte> v397 v42
      • v400 (62) = ZeroExt8to32 <uint32> v398
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v404 (62) = OffPtr <*byte> [2] v359
      • v405 (62) = Load <byte> v404 v42
      • v407 (62) = ZeroExt8to32 <uint32> v405
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v408 v402
      • v411 (62) = OffPtr <*byte> [3] v359
      • v412 (62) = Load <byte> v411 v42
      • v414 (62) = ZeroExt8to32 <uint32> v412
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v416 (62) = Or32 <uint32> v415 v409
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v419 (+65) = Neq64 <bool> v789 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v426 (+18) = OffPtr <unsafe.Pointer> [16] v794 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v428 (+46) = Add64 <uintptr> v173 v191 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (77) = OffPtr <*byte> [0] v23
      • v482 (+77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v437 (+72) = Lsh64x64 <uintptr> [false] v789 v601
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v6
      • v453 (73) = Load <unsafe.Pointer> v452 v42
      • v741 (18) = Add64 <uintptr> v437 v441
      • v442 (18) = Add64 <uintptr> v69 v741
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v443
      • v449 (73) = Load <unsafe.Pointer> v448 v42
      • v458 (73) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v62 v42
      • v460 (73) = SelectN <bool> [0] v458
      • v459 (73) = SelectN <mem> [1] v458
      • v447 (+73) = NilCheck <void> v443 v42
    • If v460b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = NilCheck <void> v8 v459
      • v467 (74) = OffPtr <*uint8> [81] v8
      • v468 (74) = Load <uint8> v467 v459
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v789 v469
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v734 (18) = Add64 <uintptr> v473 v470
      • v474 (18) = Add64 <uintptr> v734 v148
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v497 (80) = NilCheck <void> v8 v42
      • v493 (80) = OffPtr <*uint32> [12] v9
      • v494 (+80) = Load <uint32> v493 v42
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v498 (+80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v8
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v42
      • v501 (80) = Load <uintptr> v499 v42
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v9
      • v525 (82) = OffPtr <*uint16> [82] v8
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v9
      • v502 (80) = ClosureLECall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v6 v495 v42
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v503 (80) = SelectN <mem> [1] v502
      • v507 (+81) = Load <uint8> v50 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (+187) = And8 <uint8> v510 v507
      • v512 (187) = Lsh64x8 <uintptr> [true] v173 v511 (~R0[uintptr])
      • v514 (+192) = Add64 <uintptr> v729 v512 (~R0[uintptr], m[uintptr])
      • v520 (+82) = Load <unsafe.Pointer> v519 v503 (p[unsafe.Pointer])
      • v522 (82) = And64 <uintptr> v514 v504
      • v526 (82) = Load <uint16> v525 v503
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v529 (82) = InlMark <void> [5620] v503
      • v532 (+18) = AddPtr <unsafe.Pointer> v520 v528 (~R0[unsafe.Pointer], b[*bmap])
      • v539 (+83) = Load <unsafe.Pointer> v538 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v540 (83) = IsNonNil <bool> v539
    • If v540b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v588 (+197) = Rsh64Ux64 <uintptr> [false] v504 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (+198) = Less8U <bool> v589 v579
    • If v590b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v546 (+1128) = Load <uint8> v32 v503
      • v548 (1128) = And8 <uint8> v547 v546
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • If v549b84 b80 (+84)
    • b80: ← b78
      • v553 (+86) = Rsh64Ux64 <uintptr> [false] v514 v552 (m[uintptr])
    • Plainb84 (86)
    • b81:
    • BlockInvalid (206)
    • b84: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v553 (m[uintptr])
      • v557 (+88) = And64 <uintptr> v556 v504
      • v564 (88) = Mul64 <uintptr> v557 v527 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v568 (+18) = AddPtr <unsafe.Pointer> v539 v564 (~R0[unsafe.Pointer], b[*bmap], b[*bmap], oldb[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v575 (205) = OffPtr <*uint8> [0] v568
      • v576 (+205) = Load <uint8> v575 v503 (h[uint8])
      • v577 (+206) = Less8U <bool> v103 v576
      • v580 (206) = Less8U <bool> v576 v579 (~R0[bool])
      • v560 (206) = AndB <bool> v577 v580
    • If v560b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = Add8 <uint8> v589 v579 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (top[uint8], ~R0[uint8], top[uint8])
    • Plainb90 (+94)
    • b90: ← b89 b113
      • v595 (94) = Phi <*bmap> v756 v707 (b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer])
      • v753 (105) = Phi <mem> v503 v751
      • v597 (+94) = IsNonNil <bool> v595
    • If v597b95 b93 (likely) (94)
    • b93: ← b90
      • v710 (105) = OffPtr <*byte> [0] v23
      • v712 (+105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v753
      • v602 (+218) = InlMark <void> [5633] v753
      • v605 (+18) = OffPtr <unsafe.Pointer> [8] v595 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v753 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (kptr[unsafe.Pointer], p[unsafe.Pointer], k[*stringStruct])
      • v609 (+95) = Less64U <bool> v608 v69
    • If v609b97 b113 (likely) (95)
    • b97: ← b96
      • v614 (97) = OffPtr <*int> [8] v752
      • v615 (+97) = Load <int> v614 v751
      • v618 (97) = OffPtr <*int> [8] v6
      • v619 (97) = Load <int> v618 v751
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b105 b101 (97)
    • b100: ← b101
      • v629 (97) = AddPtr <*uint8> v624 v608
      • v631 (97) = Load <uint8> v629 v751
      • v633 (97) = Neq8 <bool> v593 v631
    • If v633b105 b104 (97)
    • b101: ← b97
      • v624 (97) = OffPtr <*[8]uint8> [0] v595
      • v626 (97) = IsInBounds <bool> v608 v95
    • Firstb100 b103 (likely) (97)
    • b103: ← b101
      • v628 (97) = PanicBounds <mem> [1] v608 v95 v751
    • Exit v628 (97)
    • b104: ← b100
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v639 (+100) = Load <unsafe.Pointer> v638 v751
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v643 (100) = Load <unsafe.Pointer> v642 v751
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v658 (100) = StaticLECall <bool,mem> {AuxCall{runtime.memequal}} [24] v639 v643 v619 v751
      • v660 (100) = SelectN <bool> [0] v658
      • v659 (100) = SelectN <mem> [1] v658
    • If v660b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v668 (101) = OffPtr <*uint8> [81] v8
      • v669 (+101) = Load <uint8> v668 v704
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v608 v670
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v595 v704
      • v691 (18) = Add64 <uintptr> v674 v671
      • v675 (18) = Add64 <uintptr> v691 v148
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v685 (+18) = OffPtr <unsafe.Pointer> [16] v752 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v687 (+95) = Add64 <uintptr> v608 v173 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v696 (+210) = Load <uint16> v525 v751
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v699 (210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v595 v751
      • v689 (18) = Add64 <uintptr> v700 v697
      • v701 (18) = Add64 <uintptr> v690 v689
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = NilCheck <void> v702 v751
      • v707 (210) = Load <*bmap> v702 v751 (b[*bmap], ~R0[*bmap])
    • Plainb90 (+94)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v255
  • name ~R0[unsafe.Pointer]: v344
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v595 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name ~R0[bool]: v580
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name ~R0[unsafe.Pointer]: v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • decompose builtin [60472 ns]

    expand calls [159280 ns]

    b1 b1 If b2 b2 If b1->b2 0 b5 b5 Ret b1->b5 1 b2->b5 0 b4 b4 If b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 If b4->b8 1 b7->b8 0 b10 b10 If b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 If b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 If b14->b15 0 b16 b16 If b15->b16 0 b18 b18 Ret b15->b18 1 b25 b25 First b16->b25 0 b20 b20 First b16->b20 1 b19 b19 If b19->b25 0 b24 b24 If b19->b24 1 b20->b19 0 b22 b22 Exit b20->b22 1 b34 b34 Ret b24->b34 0 b30 b30 If b24->b30 1 b28 b28 If b25->b28 0 b29 b29 Exit b25->b29 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 If b37->b38 0 b39 b39 If b38->b39 0 b41 b41 If b38->b41 1 b48 b48 First b39->b48 0 b43 b43 First b39->b43 1 b68 b68 If b41->b68 0 b66 b66 Ret b41->b66 1 b42 b42 If b42->b48 0 b47 b47 If b42->b47 1 b43->b42 0 b45 b45 Exit b43->b45 1 b55 b55 Ret b47->b55 0 b53 b53 If b47->b53 1 b51 b51 If b48->b51 0 b52 b52 Exit b48->b52 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 If b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 If b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 If b75->b78 0 b76 b76 If b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b84 b84 If b78->b84 0 b80 b80 Plain b78->b80 1 b80->b84 0 b85 b85 Plain b84->b85 0 b86 b86 Plain b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b90 b90 If b89->b90 0 b95 b95 Plain b90->b95 0 b93 b93 Ret b90->b93 1 b96 b96 If b95->b96 0 b97 b97 If b96->b97 0 b113 b113 Plain b96->b113 1 b105 b105 Plain b97->b105 0 b101 b101 First b97->b101 1 b100 b100 If b100->b105 0 b104 b104 If b100->b104 1 b101->b100 0 b103 b103 Exit b101->b103 1 b110 b110 Ret b104->b110 0 b106 b106 If b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (~R0[*stringStruct], p[unsafe.Pointer], sp[*string], key[*stringStruct])
      • v8 (13) = ArgIntReg <*abi.MapType> {t+0} [0] (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = ArgIntReg <*hmap> {h+0} [1] (h[*hmap], h[*hmap])
      • v10 (13) = OpInvalid <string>
      • v11 (+13) = OpInvalid <mem>
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v38 (?) = OpInvalid <string>
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (x[uintptr], keymaybe[uintptr], x[uintptr], x[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v95 (?) = Const64 <int> [8]
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v173 (?) = Const64 <uintptr> [1]
      • v282 (?) = Const64 <uint> [8]
      • v291 (?) = Const64 <uint> [16]
      • v300 (?) = Const64 <uint> [24]
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v717 (+18) = IsNonNil <bool> v9
      • v661 (?) = Addr <*uint8> {go:string."concurrent map read and map write"} v3
      • v581 (?) = Const64 <int> [33]
      • v627 (62) = Const64 <uintptr> [-4]
      • v601 (+72) = Const64 <uintptr> [4]
      • v729 (+192) = Const64 <uintptr> [-1]
      • v690 (210) = Const64 <uintptr> [-8]
      • v573 (?) = Const64 <int64> [0]
      • v623 (13) = ArgIntReg <*uint8> {ky+0} [2]
      • v617 (+13) = Store <mem> {*uint8} v6 v623 v1
      • v613 (13) = ArgIntReg <int> {ky+8} [3]
      • v537 (?) = OffPtr <*int> [8] v6
      • v524 (+13) = Store <mem> {int} v537 v613 v617
    • If v717b2 b5 (18)
    • b2: ← b1
      • v18 (18) = OffPtr <*int> [0] v9
      • v19 (18) = Load <int> v18 v524
      • v21 (18) = Eq64 <bool> v19 v20
    • If v21b5 b4 (18)
    • b4: ← b2
      • v32 (21) = OffPtr <*uint8> [8] v9
      • v33 (+21) = Load <uint8> v32 v524
      • v35 (21) = And8 <uint8> v34 v33
      • v37 (21) = Neq8 <bool> v36 v35
    • If v37b7 b8 (21)
    • b5: ← b2 b1
      • v25 (19) = OffPtr <*byte> [0] v23
      • v27 (+19) = MakeResult <unsafe.Pointer,mem> v25 v524
      • v544 (+19) = LocalAddr <*unsafe.Pointer> {~r0} v2 v524
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = StaticCall <mem> {AuxCall{runtime.fatal}} [16] v661 v581 v524
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v524 v41
      • v50 (25) = OffPtr <*uint8> [9] v9
      • v51 (+25) = Load <uint8> v50 v42
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v9
      • v57 (+27) = Load <unsafe.Pointer> v56 v42 (p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer])
      • v61 (28) = OffPtr <*int> [8] v6
      • v62 (+28) = Load <int> v61 v42
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v73 (+18) = OffPtr <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v78 (+30) = Less64U <bool> v77 v69
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v83 (32) = OffPtr <*int> [8] v816
      • v84 (+32) = Load <int> v83 v810
      • v88 (32) = Load <int> v61 v810
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b25 b20 (32)
    • b18: ← b15 b27
      • v177 (42) = OffPtr <*byte> [0] v23
      • v179 (+42) = MakeResult <unsafe.Pointer,mem> v177 v810
      • v694 (+42) = LocalAddr <*unsafe.Pointer> {~r0} v2 v810
    • Ret v179 (+42)
    • b19: ← b20
      • v99 (32) = AddPtr <*uint8> v93 v77
      • v101 (32) = Load <uint8> v99 v810 (x[uint8])
      • v102 (32) = InlMark <void> [5608] v810
      • v104 (+113) = Leq8U <bool> v101 v103 (~R0[bool])
    • If v104b25 b24 (+32)
    • b20: ← b16
      • v92 (32) = NilCheck <void> v57 v810
      • v93 (32) = OffPtr <*[8]uint8> [0] v57
      • v96 (32) = IsInBounds <bool> v77 v95
    • Firstb19 b22 (likely) (32)
    • b22: ← b20
      • v98 (32) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v98 (32)
    • b24: ← b19
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v123 (+38) = Load <unsafe.Pointer> v122 v810
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v127 (38) = Load <unsafe.Pointer> v126 v810
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b34 b30 (38)
    • b25: ← b19 b16
      • v109 (+33) = NilCheck <void> v57 v810
      • v110 (33) = OffPtr <*[8]uint8> [0] v57
      • v112 (33) = IsInBounds <bool> v77 v95
    • Firstb28 b29 (likely) (33)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b25
      • v115 (33) = AddPtr <*uint8> v110 v77
      • v117 (33) = Load <uint8> v115 v810
      • v118 (33) = Eq8 <bool> v36 v117
    • If v118b27 b26 (33)
    • b29: ← b25
      • v114 (33) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v114 (33)
    • b30: ← b24
      • v142 (38) = StaticCall <bool,mem> {AuxCall{runtime.memequal}} [24] v123 v127 v88 v810
      • v144 (38) = SelectN <bool> [0] v142
      • v143 (38) = SelectN <mem> [1] v142
    • If v144b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v153 (39) = OffPtr <*uint8> [81] v8
      • v152 (+39) = NilCheck <void> v8 v703
      • v154 (39) = Load <uint8> v153 v703
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v77 v155
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v688 (18) = Add64 <uintptr> v159 v156
      • v667 (+39) = LocalAddr <*unsafe.Pointer> {~r0} v2 v703
      • v160 (18) = Add64 <uintptr> v688 v148
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v171 (+18) = OffPtr <unsafe.Pointer> [16] v816 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v174 (+30) = Add64 <uintptr> v173 v77 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v188 (+18) = OffPtr <unsafe.Pointer> [8] v57 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (i[uintptr], keymaybe[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v192 (+46) = Less64U <bool> v191 v69
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v197 (48) = OffPtr <*int> [8] v794
      • v198 (+48) = Load <int> v197 v42
      • v203 (48) = Neq64 <bool> v198 v62
    • If v203b48 b43 (48)
    • b41: ← b38 b50
      • v431 (+71) = Neq64 <bool> v789 v69
    • If v431b68 b66 (71)
    • b42: ← b43
      • v212 (48) = AddPtr <*uint8> v207 v191
      • v214 (48) = Load <uint8> v212 v42 (x[uint8])
      • v215 (48) = InlMark <void> [5612] v42
      • v216 (+113) = Leq8U <bool> v214 v103 (~R0[bool])
    • If v216b48 b47 (+48)
    • b43: ← b39
      • v206 (48) = NilCheck <void> v57 v42
      • v207 (48) = OffPtr <*[8]uint8> [0] v57
      • v209 (48) = IsInBounds <bool> v191 v95
    • Firstb42 b45 (likely) (48)
    • b45: ← b43
      • v211 (48) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v211 (48)
    • b47: ← b42
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v794
      • v235 (+54) = Load <unsafe.Pointer> v234 v42
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v6
      • v239 (54) = Load <unsafe.Pointer> v238 v42
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b55 b53 (54)
    • b48: ← b42 b39
      • v221 (+49) = NilCheck <void> v57 v42
      • v222 (49) = OffPtr <*[8]uint8> [0] v57
      • v224 (49) = IsInBounds <bool> v191 v95
    • Firstb51 b52 (likely) (49)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b48
      • v227 (49) = AddPtr <*uint8> v222 v191
      • v229 (49) = Load <uint8> v227 v42
      • v230 (49) = Eq8 <bool> v36 v229
    • If v230b50 b49 (49)
    • b52: ← b48
      • v226 (49) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v226 (49)
    • b53: ← b47
      • v270 (+58) = NilCheck <void> v239 v42
      • v272 (58) = OffPtr <*byte> [0] v239
      • v273 (58) = Load <byte> v272 v42
      • v275 (58) = ZeroExt8to32 <uint32> v273
      • v278 (58) = OffPtr <*byte> [1] v239
      • v279 (58) = Load <byte> v278 v42
      • v281 (58) = ZeroExt8to32 <uint32> v279
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v287 (58) = OffPtr <*byte> [2] v239
      • v288 (58) = Load <byte> v287 v42
      • v290 (58) = ZeroExt8to32 <uint32> v288
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v296 (58) = OffPtr <*byte> [3] v239
      • v297 (58) = Load <byte> v296 v42
      • v299 (58) = ZeroExt8to32 <uint32> v297
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v302 (58) = Or32 <uint32> v293 v301
      • v303 (58) = NilCheck <void> v235 v42
      • v304 (58) = OffPtr <*byte> [0] v235
      • v305 (58) = Load <byte> v304 v42
      • v307 (58) = ZeroExt8to32 <uint32> v305
      • v309 (58) = OffPtr <*byte> [1] v235
      • v310 (58) = Load <byte> v309 v42
      • v312 (58) = ZeroExt8to32 <uint32> v310
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v316 (58) = OffPtr <*byte> [2] v235
      • v317 (58) = Load <byte> v316 v42
      • v319 (58) = ZeroExt8to32 <uint32> v317
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v323 (58) = OffPtr <*byte> [3] v235
      • v324 (58) = Load <byte> v323 v42
      • v326 (58) = ZeroExt8to32 <uint32> v324
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v328 (58) = Or32 <uint32> v321 v327
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = NilCheck <void> v8 v42
      • v247 (55) = OffPtr <*uint8> [81] v8
      • v248 (55) = Load <uint8> v247 v42
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v249 v191
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v635 (18) = Add64 <uintptr> v250 v253
      • v654 (+55) = LocalAddr <*unsafe.Pointer> {~r0} v2 v42
      • v254 (18) = Add64 <uintptr> v635 v148
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v341 (+62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v239 v42
      • v356 (+62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v235 v42
      • v625 (18) = Add64 <uintptr> v357 v62
      • v632 (18) = Add64 <uintptr> v342 v62
      • v343 (18) = Add64 <uintptr> v632 v627
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v358 (18) = Add64 <uintptr> v627 v625
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = NilCheck <void> v344 v42
      • v366 (62) = OffPtr <*byte> [0] v344
      • v367 (62) = Load <byte> v366 v42
      • v369 (62) = ZeroExt8to32 <uint32> v367
      • v371 (62) = OffPtr <*byte> [1] v344
      • v372 (62) = Load <byte> v371 v42
      • v374 (62) = ZeroExt8to32 <uint32> v372
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v378 (62) = OffPtr <*byte> [2] v344
      • v379 (62) = Load <byte> v378 v42
      • v381 (62) = ZeroExt8to32 <uint32> v379
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v382 v376
      • v385 (62) = OffPtr <*byte> [3] v344
      • v386 (62) = Load <byte> v385 v42
      • v388 (62) = ZeroExt8to32 <uint32> v386
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v390 (62) = Or32 <uint32> v389 v383
      • v391 (62) = NilCheck <void> v359 v42
      • v392 (62) = OffPtr <*byte> [0] v359
      • v393 (62) = Load <byte> v392 v42
      • v395 (62) = ZeroExt8to32 <uint32> v393
      • v397 (62) = OffPtr <*byte> [1] v359
      • v398 (62) = Load <byte> v397 v42
      • v400 (62) = ZeroExt8to32 <uint32> v398
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v404 (62) = OffPtr <*byte> [2] v359
      • v405 (62) = Load <byte> v404 v42
      • v407 (62) = ZeroExt8to32 <uint32> v405
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v408 v402
      • v411 (62) = OffPtr <*byte> [3] v359
      • v412 (62) = Load <byte> v411 v42
      • v414 (62) = ZeroExt8to32 <uint32> v412
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v416 (62) = Or32 <uint32> v415 v409
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v419 (+65) = Neq64 <bool> v789 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v426 (+18) = OffPtr <unsafe.Pointer> [16] v794 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v428 (+46) = Add64 <uintptr> v173 v191 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (77) = OffPtr <*byte> [0] v23
      • v482 (+77) = MakeResult <unsafe.Pointer,mem> v480 v483
      • v651 (+77) = LocalAddr <*unsafe.Pointer> {~r0} v2 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v437 (+72) = Lsh64x64 <uintptr> [false] v789 v601
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v6
      • v453 (73) = Load <unsafe.Pointer> v452 v42
      • v741 (18) = Add64 <uintptr> v437 v441
      • v442 (18) = Add64 <uintptr> v69 v741
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v443
      • v449 (73) = Load <unsafe.Pointer> v448 v42
      • v458 (73) = StaticCall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v62 v42
      • v460 (73) = SelectN <bool> [0] v458
      • v459 (73) = SelectN <mem> [1] v458
      • v447 (+73) = NilCheck <void> v443 v42
    • If v460b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = NilCheck <void> v8 v459
      • v467 (74) = OffPtr <*uint8> [81] v8
      • v468 (74) = Load <uint8> v467 v459
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v789 v469
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v734 (18) = Add64 <uintptr> v473 v470
      • v647 (+74) = LocalAddr <*unsafe.Pointer> {~r0} v2 v459
      • v474 (18) = Add64 <uintptr> v734 v148
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v497 (80) = NilCheck <void> v8 v42
      • v493 (80) = OffPtr <*uint32> [12] v9
      • v494 (+80) = Load <uint32> v493 v42
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v498 (+80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v8
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v42
      • v501 (80) = Load <uintptr> v499 v42
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v9
      • v525 (82) = OffPtr <*uint16> [82] v8
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v9
      • v502 (80) = ClosureCall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v6 v495 v42
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v503 (80) = SelectN <mem> [1] v502
      • v507 (+81) = Load <uint8> v50 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (+187) = And8 <uint8> v510 v507
      • v512 (187) = Lsh64x8 <uintptr> [true] v173 v511 (~R0[uintptr])
      • v514 (+192) = Add64 <uintptr> v729 v512 (m[uintptr], ~R0[uintptr])
      • v520 (+82) = Load <unsafe.Pointer> v519 v503 (p[unsafe.Pointer])
      • v522 (82) = And64 <uintptr> v514 v504
      • v526 (82) = Load <uint16> v525 v503
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v529 (82) = InlMark <void> [5620] v503
      • v532 (+18) = AddPtr <unsafe.Pointer> v520 v528 (~R0[unsafe.Pointer], b[*bmap])
      • v539 (+83) = Load <unsafe.Pointer> v538 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v540 (83) = IsNonNil <bool> v539
    • If v540b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v588 (+197) = Rsh64Ux64 <uintptr> [false] v504 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (+198) = Less8U <bool> v589 v579
    • If v590b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v546 (+1128) = Load <uint8> v32 v503
      • v548 (1128) = And8 <uint8> v547 v546
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • If v549b84 b80 (+84)
    • b80: ← b78
      • v553 (+86) = Rsh64Ux64 <uintptr> [false] v514 v552 (m[uintptr])
    • Plainb84 (86)
    • b81:
    • BlockInvalid (206)
    • b84: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v553 (m[uintptr])
      • v557 (+88) = And64 <uintptr> v556 v504
      • v564 (88) = Mul64 <uintptr> v557 v527 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v568 (+18) = AddPtr <unsafe.Pointer> v539 v564 (oldb[*bmap], b[*bmap], ~R0[unsafe.Pointer], b[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v575 (205) = OffPtr <*uint8> [0] v568
      • v576 (+205) = Load <uint8> v575 v503 (h[uint8])
      • v577 (+206) = Less8U <bool> v103 v576
      • v580 (206) = Less8U <bool> v576 v579 (~R0[bool])
      • v560 (206) = AndB <bool> v577 v580
    • If v560b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = Add8 <uint8> v589 v579 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (~R0[uint8], top[uint8], top[uint8])
    • Plainb90 (+94)
    • b90: ← b89 b113
      • v595 (94) = Phi <*bmap> v756 v707 (b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer])
      • v753 (105) = Phi <mem> v503 v751
      • v597 (+94) = IsNonNil <bool> v595
    • If v597b95 b93 (likely) (94)
    • b93: ← b90
      • v710 (105) = OffPtr <*byte> [0] v23
      • v712 (+105) = MakeResult <unsafe.Pointer,mem> v710 v753
      • v641 (+105) = LocalAddr <*unsafe.Pointer> {~r0} v2 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v753
      • v602 (+218) = InlMark <void> [5633] v753
      • v605 (+18) = OffPtr <unsafe.Pointer> [8] v595 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v753 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v609 (+95) = Less64U <bool> v608 v69
    • If v609b97 b113 (likely) (95)
    • b97: ← b96
      • v614 (97) = OffPtr <*int> [8] v752
      • v615 (+97) = Load <int> v614 v751
      • v618 (97) = OffPtr <*int> [8] v6
      • v619 (97) = Load <int> v618 v751
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b105 b101 (97)
    • b100: ← b101
      • v629 (97) = AddPtr <*uint8> v624 v608
      • v631 (97) = Load <uint8> v629 v751
      • v633 (97) = Neq8 <bool> v593 v631
    • If v633b105 b104 (97)
    • b101: ← b97
      • v624 (97) = OffPtr <*[8]uint8> [0] v595
      • v626 (97) = IsInBounds <bool> v608 v95
    • Firstb100 b103 (likely) (97)
    • b103: ← b101
      • v628 (97) = PanicBounds <mem> [1] v608 v95 v751
    • Exit v628 (97)
    • b104: ← b100
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v639 (+100) = Load <unsafe.Pointer> v638 v751
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v643 (100) = Load <unsafe.Pointer> v642 v751
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v658 (100) = StaticCall <bool,mem> {AuxCall{runtime.memequal}} [24] v639 v643 v619 v751
      • v660 (100) = SelectN <bool> [0] v658
      • v659 (100) = SelectN <mem> [1] v658
    • If v660b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v668 (101) = OffPtr <*uint8> [81] v8
      • v669 (+101) = Load <uint8> v668 v704
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v608 v670
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v595 v704
      • v691 (18) = Add64 <uintptr> v674 v671
      • v637 (+101) = LocalAddr <*unsafe.Pointer> {~r0} v2 v704
      • v675 (18) = Add64 <uintptr> v691 v148
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v685 (+18) = OffPtr <unsafe.Pointer> [16] v752 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v687 (+95) = Add64 <uintptr> v608 v173 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v696 (+210) = Load <uint16> v525 v751
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v699 (210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v595 v751
      • v689 (18) = Add64 <uintptr> v700 v697
      • v701 (18) = Add64 <uintptr> v690 v689
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = NilCheck <void> v702 v751
      • v707 (210) = Load <*bmap> v702 v751 (~R0[*bmap], b[*bmap])
    • Plainb90 (+94)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v255
  • name ~R0[unsafe.Pointer]: v344
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v595 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name ~R0[bool]: v580
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name ~R0[unsafe.Pointer]: v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • softfloat [495 ns]

    late opt [114016 ns]

    b1 b1 If b2 b2 If b1->b2 0 b5 b5 Ret b1->b5 1 b2->b5 0 b4 b4 If b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 If b4->b8 1 b7->b8 0 b10 b10 If b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 If b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 If b14->b15 0 b16 b16 If b15->b16 0 b18 b18 Ret b15->b18 1 b25 b25 First b16->b25 0 b20 b20 First b16->b20 1 b19 b19 If b19->b25 0 b24 b24 If b19->b24 1 b20->b19 0 b22 b22 Exit b20->b22 1 b34 b34 Ret b24->b34 0 b30 b30 If b24->b30 1 b28 b28 If b25->b28 0 b29 b29 Exit b25->b29 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 If b37->b38 0 b39 b39 If b38->b39 0 b41 b41 If b38->b41 1 b48 b48 First b39->b48 0 b43 b43 First b39->b43 1 b68 b68 If b41->b68 0 b66 b66 Ret b41->b66 1 b42 b42 If b42->b48 0 b47 b47 If b42->b47 1 b43->b42 0 b45 b45 Exit b43->b45 1 b55 b55 Ret b47->b55 0 b53 b53 If b47->b53 1 b51 b51 If b48->b51 0 b52 b52 Exit b48->b52 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 If b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 If b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 If b75->b78 0 b76 b76 If b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b84 b84 If b78->b84 0 b80 b80 Plain b78->b80 1 b80->b84 0 b85 b85 Plain b84->b85 0 b86 b86 Plain b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b90 b90 If b89->b90 0 b95 b95 Plain b90->b95 0 b93 b93 Ret b90->b93 1 b96 b96 If b95->b96 0 b97 b97 If b96->b97 0 b113 b113 Plain b96->b113 1 b105 b105 Plain b97->b105 0 b101 b101 First b97->b101 1 b100 b100 If b100->b105 0 b104 b104 If b100->b104 1 b101->b100 0 b103 b103 Exit b101->b103 1 b110 b110 Ret b104->b110 0 b106 b106 If b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (~R0[*stringStruct], p[unsafe.Pointer], sp[*string], key[*stringStruct])
      • v8 (13) = ArgIntReg <*abi.MapType> {t+0} [0] (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = ArgIntReg <*hmap> {h+0} [1] (h[*hmap], h[*hmap])
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (x[uintptr], x[uintptr], x[uintptr], keymaybe[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v95 (?) = Const64 <int> [8]
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v173 (?) = Const64 <uintptr> [1]
      • v282 (?) = Const64 <uint> [8]
      • v291 (?) = Const64 <uint> [16]
      • v300 (?) = Const64 <uint> [24]
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v717 (+18) = IsNonNil <bool> v9
      • v661 (?) = Addr <*uint8> {go:string."concurrent map read and map write"} v3
      • v581 (?) = Const64 <int> [33]
      • v627 (62) = Const64 <uintptr> [-4]
      • v601 (+72) = Const64 <uintptr> [4]
      • v729 (+192) = Const64 <uintptr> [-1]
      • v690 (210) = Const64 <uintptr> [-8]
      • v623 (13) = ArgIntReg <*uint8> {ky+0} [2]
      • v617 (+13) = Store <mem> {*uint8} v6 v623 v1
      • v613 (13) = ArgIntReg <int> {ky+8} [3]
      • v537 (?) = OffPtr <*int> [8] v6
      • v524 (+13) = Store <mem> {int} v537 v613 v617
    • If v717b2 b5 (18)
    • b2: ← b1
      • v18 (18) = OffPtr <*int> [0] v9
      • v19 (18) = Load <int> v18 v524
      • v21 (18) = Eq64 <bool> v19 v20
    • If v21b5 b4 (18)
    • b4: ← b2
      • v32 (21) = OffPtr <*uint8> [8] v9
      • v33 (+21) = Load <uint8> v32 v524
      • v35 (21) = And8 <uint8> v34 v33
      • v37 (21) = Neq8 <bool> v36 v35
    • If v37b7 b8 (21)
    • b5: ← b2 b1
      • v25 (19) = OffPtr <*byte> [0] v23
      • v27 (+19) = MakeResult <unsafe.Pointer,mem> v25 v524
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = StaticCall <mem> {AuxCall{runtime.fatal}} [16] v661 v581 v524
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v524 v41
      • v50 (25) = OffPtr <*uint8> [9] v9
      • v51 (+25) = Load <uint8> v50 v42
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v9
      • v57 (+27) = Load <unsafe.Pointer> v56 v42 (p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer])
      • v61 (28) = OffPtr <*int> [8] v6
      • v62 (+28) = Load <int> v61 v42
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v73 (+18) = OffPtr <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v78 (+30) = Less64U <bool> v77 v69
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v83 (32) = OffPtr <*int> [8] v816
      • v84 (+32) = Load <int> v83 v810
      • v88 (32) = Load <int> v61 v810
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b25 b20 (32)
    • b18: ← b15 b27
      • v177 (42) = OffPtr <*byte> [0] v23
      • v179 (+42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b20
      • v99 (32) = AddPtr <*uint8> v93 v77
      • v101 (32) = Load <uint8> v99 v810 (x[uint8])
      • v102 (32) = InlMark <void> [5608] v810
      • v104 (+113) = Leq8U <bool> v101 v103 (~R0[bool])
    • If v104b25 b24 (+32)
    • b20: ← b16
      • v92 (32) = NilCheck <void> v57 v810
      • v93 (32) = OffPtr <*[8]uint8> [0] v57
    • Firstb19 b22 (likely) (32)
    • b22: ← b20
      • v98 (32) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v98 (32)
    • b24: ← b19
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v123 (+38) = Load <unsafe.Pointer> v122 v810
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v127 (38) = Load <unsafe.Pointer> v126 v810
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b34 b30 (38)
    • b25: ← b19 b16
      • v109 (+33) = NilCheck <void> v57 v810
      • v110 (33) = OffPtr <*[8]uint8> [0] v57
    • Firstb28 b29 (likely) (33)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b25
      • v115 (33) = AddPtr <*uint8> v110 v77
      • v117 (33) = Load <uint8> v115 v810
      • v118 (33) = Eq8 <bool> v36 v117
    • If v118b27 b26 (33)
    • b29: ← b25
      • v114 (33) = PanicBounds <mem> [1] v77 v95 v810
    • Exit v114 (33)
    • b30: ← b24
      • v142 (38) = StaticCall <bool,mem> {AuxCall{runtime.memequal}} [24] v123 v127 v88 v810
      • v144 (38) = SelectN <bool> [0] v142
      • v143 (38) = SelectN <mem> [1] v142
    • If v144b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v153 (39) = OffPtr <*uint8> [81] v8
      • v152 (+39) = NilCheck <void> v8 v703
      • v154 (39) = Load <uint8> v153 v703
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v77 v155
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v688 (18) = Add64 <uintptr> v159 v156
      • v160 (18) = Add64 <uintptr> v688 v148
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v171 (+18) = OffPtr <unsafe.Pointer> [16] v816 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v174 (+30) = Add64 <uintptr> v173 v77 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v188 (+18) = OffPtr <unsafe.Pointer> [8] v57 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (keymaybe[uintptr], i[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (p[unsafe.Pointer], kptr[unsafe.Pointer], k[*stringStruct])
      • v192 (+46) = Less64U <bool> v191 v69
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v197 (48) = OffPtr <*int> [8] v794
      • v198 (+48) = Load <int> v197 v42
      • v203 (48) = Neq64 <bool> v198 v62
    • If v203b48 b43 (48)
    • b41: ← b38 b50
      • v431 (+71) = Neq64 <bool> v789 v69
    • If v431b68 b66 (71)
    • b42: ← b43
      • v212 (48) = AddPtr <*uint8> v207 v191
      • v214 (48) = Load <uint8> v212 v42 (x[uint8])
      • v215 (48) = InlMark <void> [5612] v42
      • v216 (+113) = Leq8U <bool> v214 v103 (~R0[bool])
    • If v216b48 b47 (+48)
    • b43: ← b39
      • v206 (48) = NilCheck <void> v57 v42
      • v207 (48) = OffPtr <*[8]uint8> [0] v57
    • Firstb42 b45 (likely) (48)
    • b45: ← b43
      • v211 (48) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v211 (48)
    • b47: ← b42
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v794
      • v235 (+54) = Load <unsafe.Pointer> v234 v42
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v6
      • v239 (54) = Load <unsafe.Pointer> v238 v42
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b55 b53 (54)
    • b48: ← b42 b39
      • v221 (+49) = NilCheck <void> v57 v42
      • v222 (49) = OffPtr <*[8]uint8> [0] v57
    • Firstb51 b52 (likely) (49)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b48
      • v227 (49) = AddPtr <*uint8> v222 v191
      • v229 (49) = Load <uint8> v227 v42
      • v230 (49) = Eq8 <bool> v36 v229
    • If v230b50 b49 (49)
    • b52: ← b48
      • v226 (49) = PanicBounds <mem> [1] v191 v95 v42
    • Exit v226 (49)
    • b53: ← b47
      • v270 (+58) = NilCheck <void> v239 v42
      • v272 (58) = OffPtr <*byte> [0] v239
      • v273 (58) = Load <byte> v272 v42
      • v275 (58) = ZeroExt8to32 <uint32> v273
      • v278 (58) = OffPtr <*byte> [1] v239
      • v279 (58) = Load <byte> v278 v42
      • v281 (58) = ZeroExt8to32 <uint32> v279
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v287 (58) = OffPtr <*byte> [2] v239
      • v288 (58) = Load <byte> v287 v42
      • v290 (58) = ZeroExt8to32 <uint32> v288
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v296 (58) = OffPtr <*byte> [3] v239
      • v297 (58) = Load <byte> v296 v42
      • v299 (58) = ZeroExt8to32 <uint32> v297
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v302 (58) = Or32 <uint32> v293 v301
      • v303 (58) = NilCheck <void> v235 v42
      • v304 (58) = OffPtr <*byte> [0] v235
      • v305 (58) = Load <byte> v304 v42
      • v307 (58) = ZeroExt8to32 <uint32> v305
      • v309 (58) = OffPtr <*byte> [1] v235
      • v310 (58) = Load <byte> v309 v42
      • v312 (58) = ZeroExt8to32 <uint32> v310
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v316 (58) = OffPtr <*byte> [2] v235
      • v317 (58) = Load <byte> v316 v42
      • v319 (58) = ZeroExt8to32 <uint32> v317
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v323 (58) = OffPtr <*byte> [3] v235
      • v324 (58) = Load <byte> v323 v42
      • v326 (58) = ZeroExt8to32 <uint32> v324
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v328 (58) = Or32 <uint32> v321 v327
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = NilCheck <void> v8 v42
      • v247 (55) = OffPtr <*uint8> [81] v8
      • v248 (55) = Load <uint8> v247 v42
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v249 v191
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v635 (18) = Add64 <uintptr> v250 v253
      • v254 (18) = Add64 <uintptr> v635 v148
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v341 (+62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v239 v42
      • v356 (+62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v235 v42
      • v625 (18) = Add64 <uintptr> v357 v62
      • v632 (18) = Add64 <uintptr> v342 v62
      • v343 (18) = Add64 <uintptr> v632 v627
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v358 (18) = Add64 <uintptr> v627 v625
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = NilCheck <void> v344 v42
      • v366 (62) = OffPtr <*byte> [0] v344
      • v367 (62) = Load <byte> v366 v42
      • v369 (62) = ZeroExt8to32 <uint32> v367
      • v371 (62) = OffPtr <*byte> [1] v344
      • v372 (62) = Load <byte> v371 v42
      • v374 (62) = ZeroExt8to32 <uint32> v372
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v378 (62) = OffPtr <*byte> [2] v344
      • v379 (62) = Load <byte> v378 v42
      • v381 (62) = ZeroExt8to32 <uint32> v379
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v382 v376
      • v385 (62) = OffPtr <*byte> [3] v344
      • v386 (62) = Load <byte> v385 v42
      • v388 (62) = ZeroExt8to32 <uint32> v386
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v390 (62) = Or32 <uint32> v389 v383
      • v391 (62) = NilCheck <void> v359 v42
      • v392 (62) = OffPtr <*byte> [0] v359
      • v393 (62) = Load <byte> v392 v42
      • v395 (62) = ZeroExt8to32 <uint32> v393
      • v397 (62) = OffPtr <*byte> [1] v359
      • v398 (62) = Load <byte> v397 v42
      • v400 (62) = ZeroExt8to32 <uint32> v398
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v404 (62) = OffPtr <*byte> [2] v359
      • v405 (62) = Load <byte> v404 v42
      • v407 (62) = ZeroExt8to32 <uint32> v405
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v408 v402
      • v411 (62) = OffPtr <*byte> [3] v359
      • v412 (62) = Load <byte> v411 v42
      • v414 (62) = ZeroExt8to32 <uint32> v412
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v416 (62) = Or32 <uint32> v415 v409
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v419 (+65) = Neq64 <bool> v789 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v426 (+18) = OffPtr <unsafe.Pointer> [16] v794 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v428 (+46) = Add64 <uintptr> v173 v191 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (77) = OffPtr <*byte> [0] v23
      • v482 (+77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v437 (+72) = Lsh64x64 <uintptr> [false] v789 v601
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v6
      • v453 (73) = Load <unsafe.Pointer> v452 v42
      • v741 (18) = Add64 <uintptr> v437 v441
      • v442 (18) = Add64 <uintptr> v69 v741
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v443
      • v449 (73) = Load <unsafe.Pointer> v448 v42
      • v458 (73) = StaticCall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v62 v42
      • v460 (73) = SelectN <bool> [0] v458
      • v459 (73) = SelectN <mem> [1] v458
      • v447 (+73) = NilCheck <void> v443 v42
    • If v460b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = NilCheck <void> v8 v459
      • v467 (74) = OffPtr <*uint8> [81] v8
      • v468 (74) = Load <uint8> v467 v459
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v789 v469
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v734 (18) = Add64 <uintptr> v473 v470
      • v474 (18) = Add64 <uintptr> v734 v148
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v497 (80) = NilCheck <void> v8 v42
      • v493 (80) = OffPtr <*uint32> [12] v9
      • v494 (+80) = Load <uint32> v493 v42
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v498 (+80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v8
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v42
      • v501 (80) = Load <uintptr> v499 v42
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v9
      • v525 (82) = OffPtr <*uint16> [82] v8
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v9
      • v502 (80) = ClosureCall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v6 v495 v42
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v503 (80) = SelectN <mem> [1] v502
      • v507 (+81) = Load <uint8> v50 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (+187) = And8 <uint8> v510 v507
      • v512 (187) = Lsh64x8 <uintptr> [true] v173 v511 (~R0[uintptr])
      • v514 (+192) = Add64 <uintptr> v729 v512 (m[uintptr], ~R0[uintptr])
      • v520 (+82) = Load <unsafe.Pointer> v519 v503 (p[unsafe.Pointer])
      • v522 (82) = And64 <uintptr> v514 v504
      • v526 (82) = Load <uint16> v525 v503
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v529 (82) = InlMark <void> [5620] v503
      • v532 (+18) = AddPtr <unsafe.Pointer> v520 v528 (~R0[unsafe.Pointer], b[*bmap])
      • v539 (+83) = Load <unsafe.Pointer> v538 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v540 (83) = IsNonNil <bool> v539
    • If v540b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v588 (+197) = Rsh64Ux64 <uintptr> [false] v504 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (+198) = Less8U <bool> v589 v579
    • If v590b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v546 (+1128) = Load <uint8> v32 v503
      • v548 (1128) = And8 <uint8> v547 v546
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • If v549b84 b80 (+84)
    • b80: ← b78
      • v553 (+86) = Rsh64Ux64 <uintptr> [false] v514 v552 (m[uintptr])
    • Plainb84 (86)
    • b81:
    • BlockInvalid (206)
    • b84: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v553 (m[uintptr])
      • v557 (+88) = And64 <uintptr> v556 v504
      • v564 (88) = Mul64 <uintptr> v557 v527 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v568 (+18) = AddPtr <unsafe.Pointer> v539 v564 (b[*bmap], ~R0[unsafe.Pointer], b[*bmap], oldb[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v575 (205) = OffPtr <*uint8> [0] v568
      • v576 (+205) = Load <uint8> v575 v503 (h[uint8])
      • v492 (206) = Const8 <uint8> [3]
      • v454 (206) = Const8 <uint8> [-2]
      • v518 (206) = Add8 <uint8> v454 v576
      • v560 (+206) = Less8U <bool> v518 v492
    • If v560b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = Add8 <uint8> v589 v579 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (top[uint8], ~R0[uint8], top[uint8])
    • Plainb90 (+94)
    • b90: ← b89 b113
      • v595 (94) = Phi <*bmap> v756 v707 (p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer])
      • v753 (105) = Phi <mem> v503 v751
      • v597 (+94) = IsNonNil <bool> v595
    • If v597b95 b93 (likely) (94)
    • b93: ← b90
      • v710 (105) = OffPtr <*byte> [0] v23
      • v712 (+105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v753
      • v602 (+218) = InlMark <void> [5633] v753
      • v605 (+18) = OffPtr <unsafe.Pointer> [8] v595 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v753 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v609 (+95) = Less64U <bool> v608 v69
    • If v609b97 b113 (likely) (95)
    • b97: ← b96
      • v614 (97) = OffPtr <*int> [8] v752
      • v615 (+97) = Load <int> v614 v751
      • v618 (97) = OffPtr <*int> [8] v6
      • v619 (97) = Load <int> v618 v751
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b105 b101 (97)
    • b100: ← b101
      • v629 (97) = AddPtr <*uint8> v624 v608
      • v631 (97) = Load <uint8> v629 v751
      • v633 (97) = Neq8 <bool> v593 v631
    • If v633b105 b104 (97)
    • b101: ← b97
      • v624 (97) = OffPtr <*[8]uint8> [0] v595
    • Firstb100 b103 (likely) (97)
    • b103: ← b101
      • v628 (97) = PanicBounds <mem> [1] v608 v95 v751
    • Exit v628 (97)
    • b104: ← b100
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v639 (+100) = Load <unsafe.Pointer> v638 v751
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v643 (100) = Load <unsafe.Pointer> v642 v751
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v658 (100) = StaticCall <bool,mem> {AuxCall{runtime.memequal}} [24] v639 v643 v619 v751
      • v660 (100) = SelectN <bool> [0] v658
      • v659 (100) = SelectN <mem> [1] v658
    • If v660b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v668 (101) = OffPtr <*uint8> [81] v8
      • v669 (+101) = Load <uint8> v668 v704
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v608 v670
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v595 v704
      • v691 (18) = Add64 <uintptr> v674 v671
      • v675 (18) = Add64 <uintptr> v691 v148
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v685 (+18) = OffPtr <unsafe.Pointer> [16] v752 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v687 (+95) = Add64 <uintptr> v608 v173 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v696 (+210) = Load <uint16> v525 v751
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v699 (210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v595 v751
      • v689 (18) = Add64 <uintptr> v700 v697
      • v701 (18) = Add64 <uintptr> v690 v689
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = NilCheck <void> v702 v751
      • v707 (210) = Load <*bmap> v702 v751 (~R0[*bmap], b[*bmap])
    • Plainb90 (+94)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v255
  • name ~R0[unsafe.Pointer]: v344
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v595 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name ~R0[bool]: v580
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name ~R0[unsafe.Pointer]: v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • dead auto elim [27773 ns]

    generic deadcode [103041 ns]

    b1 b1 If b2 b2 If b1->b2 0 b5 b5 Ret b1->b5 1 b2->b5 0 b4 b4 If b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 If b4->b8 1 b7->b8 0 b10 b10 If b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 If b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 If b14->b15 0 b16 b16 If b15->b16 0 b18 b18 Ret b15->b18 1 b25 b25 Plain b16->b25 0 b20 b20 Plain b16->b20 1 b19 b19 If b19->b25 0 b24 b24 If b19->b24 1 b20->b19 0 b34 b34 Ret b24->b34 0 b30 b30 If b24->b30 1 b28 b28 If b25->b28 0 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 If b37->b38 0 b39 b39 If b38->b39 0 b41 b41 If b38->b41 1 b48 b48 Plain b39->b48 0 b43 b43 Plain b39->b43 1 b68 b68 If b41->b68 0 b66 b66 Ret b41->b66 1 b42 b42 If b42->b48 0 b47 b47 If b42->b47 1 b43->b42 0 b55 b55 Ret b47->b55 0 b53 b53 If b47->b53 1 b51 b51 If b48->b51 0 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 If b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 If b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 If b75->b78 0 b76 b76 If b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b84 b84 If b78->b84 0 b80 b80 Plain b78->b80 1 b80->b84 0 b85 b85 Plain b84->b85 0 b86 b86 Plain b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b90 b90 If b89->b90 0 b95 b95 Plain b90->b95 0 b93 b93 Ret b90->b93 1 b96 b96 If b95->b96 0 b97 b97 If b96->b97 0 b113 b113 Plain b96->b113 1 b105 b105 Plain b97->b105 0 b101 b101 Plain b97->b101 1 b100 b100 If b100->b105 0 b104 b104 If b100->b104 1 b101->b100 0 b110 b110 Ret b104->b110 0 b106 b106 If b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (~R0[*stringStruct], p[unsafe.Pointer], sp[*string], key[*stringStruct])
      • v8 (13) = ArgIntReg <*abi.MapType> {t+0} [0] (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = ArgIntReg <*hmap> {h+0} [1] (h[*hmap], h[*hmap])
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (x[uintptr], x[uintptr], keymaybe[uintptr], x[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v173 (?) = Const64 <uintptr> [1]
      • v282 (?) = Const64 <uint> [8]
      • v291 (?) = Const64 <uint> [16]
      • v300 (?) = Const64 <uint> [24]
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v717 (+18) = IsNonNil <bool> v9
      • v661 (?) = Addr <*uint8> {go:string."concurrent map read and map write"} v3
      • v581 (?) = Const64 <int> [33]
      • v627 (62) = Const64 <uintptr> [-4]
      • v601 (+72) = Const64 <uintptr> [4]
      • v729 (+192) = Const64 <uintptr> [-1]
      • v690 (210) = Const64 <uintptr> [-8]
      • v623 (13) = ArgIntReg <*uint8> {ky+0} [2]
      • v617 (+13) = Store <mem> {*uint8} v6 v623 v1
      • v613 (13) = ArgIntReg <int> {ky+8} [3]
      • v537 (?) = OffPtr <*int> [8] v6
      • v524 (+13) = Store <mem> {int} v537 v613 v617
    • If v717b2 b5 (18)
    • b2: ← b1
      • v18 (18) = OffPtr <*int> [0] v9
      • v19 (18) = Load <int> v18 v524
      • v21 (18) = Eq64 <bool> v19 v20
    • If v21b5 b4 (18)
    • b4: ← b2
      • v32 (21) = OffPtr <*uint8> [8] v9
      • v33 (+21) = Load <uint8> v32 v524
      • v35 (21) = And8 <uint8> v34 v33
      • v37 (21) = Neq8 <bool> v36 v35
    • If v37b7 b8 (21)
    • b5: ← b2 b1
      • v25 (19) = OffPtr <*byte> [0] v23
      • v27 (+19) = MakeResult <unsafe.Pointer,mem> v25 v524
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = StaticCall <mem> {AuxCall{runtime.fatal}} [16] v661 v581 v524
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v524 v41
      • v50 (25) = OffPtr <*uint8> [9] v9
      • v51 (+25) = Load <uint8> v50 v42
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v9
      • v57 (+27) = Load <unsafe.Pointer> v56 v42 (p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer])
      • v61 (28) = OffPtr <*int> [8] v6
      • v62 (+28) = Load <int> v61 v42
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v73 (+18) = OffPtr <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (p[unsafe.Pointer], kptr[unsafe.Pointer], k[*stringStruct])
      • v78 (+30) = Less64U <bool> v77 v69
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v83 (32) = OffPtr <*int> [8] v816
      • v84 (+32) = Load <int> v83 v810
      • v88 (32) = Load <int> v61 v810
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b25 b20 (32)
    • b18: ← b15 b27
      • v177 (42) = OffPtr <*byte> [0] v23
      • v179 (+42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b20
      • v99 (32) = AddPtr <*uint8> v93 v77
      • v101 (32) = Load <uint8> v99 v810 (x[uint8])
      • v102 (32) = InlMark <void> [5608] v810
      • v104 (+113) = Leq8U <bool> v101 v103 (~R0[bool])
    • If v104b25 b24 (+32)
    • b20: ← b16
      • v92 (32) = NilCheck <void> v57 v810
      • v93 (32) = OffPtr <*[8]uint8> [0] v57
    • Plainb19 (32)
    • b24: ← b19
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v123 (+38) = Load <unsafe.Pointer> v122 v810
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v127 (38) = Load <unsafe.Pointer> v126 v810
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b34 b30 (38)
    • b25: ← b19 b16
      • v109 (+33) = NilCheck <void> v57 v810
      • v110 (33) = OffPtr <*[8]uint8> [0] v57
    • Plainb28 (33)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b25
      • v115 (33) = AddPtr <*uint8> v110 v77
      • v117 (33) = Load <uint8> v115 v810
      • v118 (33) = Eq8 <bool> v36 v117
    • If v118b27 b26 (33)
    • b30: ← b24
      • v142 (38) = StaticCall <bool,mem> {AuxCall{runtime.memequal}} [24] v123 v127 v88 v810
      • v144 (38) = SelectN <bool> [0] v142
      • v143 (38) = SelectN <mem> [1] v142
    • If v144b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v153 (39) = OffPtr <*uint8> [81] v8
      • v152 (+39) = NilCheck <void> v8 v703
      • v154 (39) = Load <uint8> v153 v703
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v77 v155
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v688 (18) = Add64 <uintptr> v159 v156
      • v160 (18) = Add64 <uintptr> v688 v148
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v171 (+18) = OffPtr <unsafe.Pointer> [16] v816 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v174 (+30) = Add64 <uintptr> v173 v77 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v188 (+18) = OffPtr <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (i[uintptr], keymaybe[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v192 (+46) = Less64U <bool> v191 v69
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v197 (48) = OffPtr <*int> [8] v794
      • v198 (+48) = Load <int> v197 v42
      • v203 (48) = Neq64 <bool> v198 v62
    • If v203b48 b43 (48)
    • b41: ← b38 b50
      • v431 (+71) = Neq64 <bool> v789 v69
    • If v431b68 b66 (71)
    • b42: ← b43
      • v212 (48) = AddPtr <*uint8> v207 v191
      • v214 (48) = Load <uint8> v212 v42 (x[uint8])
      • v215 (48) = InlMark <void> [5612] v42
      • v216 (+113) = Leq8U <bool> v214 v103 (~R0[bool])
    • If v216b48 b47 (+48)
    • b43: ← b39
      • v206 (48) = NilCheck <void> v57 v42
      • v207 (48) = OffPtr <*[8]uint8> [0] v57
    • Plainb42 (48)
    • b47: ← b42
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v794
      • v235 (+54) = Load <unsafe.Pointer> v234 v42
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v6
      • v239 (54) = Load <unsafe.Pointer> v238 v42
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b55 b53 (54)
    • b48: ← b42 b39
      • v221 (+49) = NilCheck <void> v57 v42
      • v222 (49) = OffPtr <*[8]uint8> [0] v57
    • Plainb51 (49)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b48
      • v227 (49) = AddPtr <*uint8> v222 v191
      • v229 (49) = Load <uint8> v227 v42
      • v230 (49) = Eq8 <bool> v36 v229
    • If v230b50 b49 (49)
    • b53: ← b47
      • v270 (+58) = NilCheck <void> v239 v42
      • v272 (58) = OffPtr <*byte> [0] v239
      • v273 (58) = Load <byte> v272 v42
      • v275 (58) = ZeroExt8to32 <uint32> v273
      • v278 (58) = OffPtr <*byte> [1] v239
      • v279 (58) = Load <byte> v278 v42
      • v281 (58) = ZeroExt8to32 <uint32> v279
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v287 (58) = OffPtr <*byte> [2] v239
      • v288 (58) = Load <byte> v287 v42
      • v290 (58) = ZeroExt8to32 <uint32> v288
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v296 (58) = OffPtr <*byte> [3] v239
      • v297 (58) = Load <byte> v296 v42
      • v299 (58) = ZeroExt8to32 <uint32> v297
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v302 (58) = Or32 <uint32> v293 v301
      • v303 (58) = NilCheck <void> v235 v42
      • v304 (58) = OffPtr <*byte> [0] v235
      • v305 (58) = Load <byte> v304 v42
      • v307 (58) = ZeroExt8to32 <uint32> v305
      • v309 (58) = OffPtr <*byte> [1] v235
      • v310 (58) = Load <byte> v309 v42
      • v312 (58) = ZeroExt8to32 <uint32> v310
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v316 (58) = OffPtr <*byte> [2] v235
      • v317 (58) = Load <byte> v316 v42
      • v319 (58) = ZeroExt8to32 <uint32> v317
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v323 (58) = OffPtr <*byte> [3] v235
      • v324 (58) = Load <byte> v323 v42
      • v326 (58) = ZeroExt8to32 <uint32> v324
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v328 (58) = Or32 <uint32> v321 v327
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = NilCheck <void> v8 v42
      • v247 (55) = OffPtr <*uint8> [81] v8
      • v248 (55) = Load <uint8> v247 v42
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v249 v191
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v635 (18) = Add64 <uintptr> v250 v253
      • v254 (18) = Add64 <uintptr> v635 v148
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v341 (+62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v239 v42
      • v356 (+62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v235 v42
      • v625 (18) = Add64 <uintptr> v357 v62
      • v632 (18) = Add64 <uintptr> v342 v62
      • v343 (18) = Add64 <uintptr> v632 v627
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v358 (18) = Add64 <uintptr> v627 v625
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = NilCheck <void> v344 v42
      • v366 (62) = OffPtr <*byte> [0] v344
      • v367 (62) = Load <byte> v366 v42
      • v369 (62) = ZeroExt8to32 <uint32> v367
      • v371 (62) = OffPtr <*byte> [1] v344
      • v372 (62) = Load <byte> v371 v42
      • v374 (62) = ZeroExt8to32 <uint32> v372
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v378 (62) = OffPtr <*byte> [2] v344
      • v379 (62) = Load <byte> v378 v42
      • v381 (62) = ZeroExt8to32 <uint32> v379
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v382 v376
      • v385 (62) = OffPtr <*byte> [3] v344
      • v386 (62) = Load <byte> v385 v42
      • v388 (62) = ZeroExt8to32 <uint32> v386
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v390 (62) = Or32 <uint32> v389 v383
      • v391 (62) = NilCheck <void> v359 v42
      • v392 (62) = OffPtr <*byte> [0] v359
      • v393 (62) = Load <byte> v392 v42
      • v395 (62) = ZeroExt8to32 <uint32> v393
      • v397 (62) = OffPtr <*byte> [1] v359
      • v398 (62) = Load <byte> v397 v42
      • v400 (62) = ZeroExt8to32 <uint32> v398
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v404 (62) = OffPtr <*byte> [2] v359
      • v405 (62) = Load <byte> v404 v42
      • v407 (62) = ZeroExt8to32 <uint32> v405
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v408 v402
      • v411 (62) = OffPtr <*byte> [3] v359
      • v412 (62) = Load <byte> v411 v42
      • v414 (62) = ZeroExt8to32 <uint32> v412
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v416 (62) = Or32 <uint32> v415 v409
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v419 (+65) = Neq64 <bool> v789 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v426 (+18) = OffPtr <unsafe.Pointer> [16] v794 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v428 (+46) = Add64 <uintptr> v173 v191 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (77) = OffPtr <*byte> [0] v23
      • v482 (+77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v437 (+72) = Lsh64x64 <uintptr> [false] v789 v601
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v6
      • v453 (73) = Load <unsafe.Pointer> v452 v42
      • v741 (18) = Add64 <uintptr> v437 v441
      • v442 (18) = Add64 <uintptr> v69 v741
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v443
      • v449 (73) = Load <unsafe.Pointer> v448 v42
      • v458 (73) = StaticCall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v62 v42
      • v460 (73) = SelectN <bool> [0] v458
      • v459 (73) = SelectN <mem> [1] v458
      • v447 (+73) = NilCheck <void> v443 v42
    • If v460b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = NilCheck <void> v8 v459
      • v467 (74) = OffPtr <*uint8> [81] v8
      • v468 (74) = Load <uint8> v467 v459
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v789 v469
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v734 (18) = Add64 <uintptr> v473 v470
      • v474 (18) = Add64 <uintptr> v734 v148
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v497 (80) = NilCheck <void> v8 v42
      • v493 (80) = OffPtr <*uint32> [12] v9
      • v494 (+80) = Load <uint32> v493 v42
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v498 (+80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v8
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v42
      • v501 (80) = Load <uintptr> v499 v42
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v9
      • v525 (82) = OffPtr <*uint16> [82] v8
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v9
      • v502 (80) = ClosureCall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v6 v495 v42
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v503 (80) = SelectN <mem> [1] v502
      • v507 (+81) = Load <uint8> v50 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (+187) = And8 <uint8> v510 v507
      • v512 (187) = Lsh64x8 <uintptr> [true] v173 v511 (~R0[uintptr])
      • v514 (+192) = Add64 <uintptr> v729 v512 (~R0[uintptr], m[uintptr])
      • v520 (+82) = Load <unsafe.Pointer> v519 v503 (p[unsafe.Pointer])
      • v522 (82) = And64 <uintptr> v514 v504
      • v526 (82) = Load <uint16> v525 v503
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v529 (82) = InlMark <void> [5620] v503
      • v532 (+18) = AddPtr <unsafe.Pointer> v520 v528 (b[*bmap], ~R0[unsafe.Pointer])
      • v539 (+83) = Load <unsafe.Pointer> v538 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v540 (83) = IsNonNil <bool> v539
    • If v540b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v588 (+197) = Rsh64Ux64 <uintptr> [false] v504 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (+198) = Less8U <bool> v589 v579
    • If v590b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v546 (+1128) = Load <uint8> v32 v503
      • v548 (1128) = And8 <uint8> v547 v546
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • If v549b84 b80 (+84)
    • b80: ← b78
      • v553 (+86) = Rsh64Ux64 <uintptr> [false] v514 v552 (m[uintptr])
    • Plainb84 (86)
    • b84: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v553 (m[uintptr])
      • v557 (+88) = And64 <uintptr> v556 v504
      • v564 (88) = Mul64 <uintptr> v557 v527 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v568 (+18) = AddPtr <unsafe.Pointer> v539 v564 (b[*bmap], ~R0[unsafe.Pointer], b[*bmap], oldb[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v575 (205) = OffPtr <*uint8> [0] v568
      • v576 (+205) = Load <uint8> v575 v503 (h[uint8])
      • v492 (206) = Const8 <uint8> [3]
      • v454 (206) = Const8 <uint8> [-2]
      • v518 (206) = Add8 <uint8> v454 v576
      • v560 (+206) = Less8U <bool> v518 v492
    • If v560b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = Add8 <uint8> v589 v579 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (top[uint8], ~R0[uint8], top[uint8])
    • Plainb90 (+94)
    • b90: ← b89 b113
      • v595 (94) = Phi <*bmap> v756 v707 (p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer])
      • v753 (105) = Phi <mem> v503 v751
      • v597 (+94) = IsNonNil <bool> v595
    • If v597b95 b93 (likely) (94)
    • b93: ← b90
      • v710 (105) = OffPtr <*byte> [0] v23
      • v712 (+105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v753
      • v602 (+218) = InlMark <void> [5633] v753
      • v605 (+18) = OffPtr <unsafe.Pointer> [8] v595 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v753 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v609 (+95) = Less64U <bool> v608 v69
    • If v609b97 b113 (likely) (95)
    • b97: ← b96
      • v614 (97) = OffPtr <*int> [8] v752
      • v615 (+97) = Load <int> v614 v751
      • v618 (97) = OffPtr <*int> [8] v6
      • v619 (97) = Load <int> v618 v751
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b105 b101 (97)
    • b100: ← b101
      • v629 (97) = AddPtr <*uint8> v624 v608
      • v631 (97) = Load <uint8> v629 v751
      • v633 (97) = Neq8 <bool> v593 v631
    • If v633b105 b104 (97)
    • b101: ← b97
      • v624 (97) = OffPtr <*[8]uint8> [0] v595
    • Plainb100 (97)
    • b104: ← b100
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v639 (+100) = Load <unsafe.Pointer> v638 v751
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v643 (100) = Load <unsafe.Pointer> v642 v751
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v658 (100) = StaticCall <bool,mem> {AuxCall{runtime.memequal}} [24] v639 v643 v619 v751
      • v660 (100) = SelectN <bool> [0] v658
      • v659 (100) = SelectN <mem> [1] v658
    • If v660b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v668 (101) = OffPtr <*uint8> [81] v8
      • v669 (+101) = Load <uint8> v668 v704
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v608 v670
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v595 v704
      • v691 (18) = Add64 <uintptr> v674 v671
      • v675 (18) = Add64 <uintptr> v691 v148
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v685 (+18) = OffPtr <unsafe.Pointer> [16] v752 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v687 (+95) = Add64 <uintptr> v608 v173 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v696 (+210) = Load <uint16> v525 v751
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v699 (210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v595 v751
      • v689 (18) = Add64 <uintptr> v700 v697
      • v701 (18) = Add64 <uintptr> v690 v689
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = NilCheck <void> v702 v751
      • v707 (210) = Load <*bmap> v702 v751 (~R0[*bmap], b[*bmap])
    • Plainb90 (+94)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v255
  • name ~R0[unsafe.Pointer]: v344
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v595 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name ~R0[unsafe.Pointer]: v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • check bce [781 ns]

    branchelim [35713 ns]

    late fuse [46332 ns]

    b1 b1 If b2 b2 If b1->b2 0 b5 b5 Ret b1->b5 1 b2->b5 0 b4 b4 If b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 If b4->b8 1 b7->b8 0 b10 b10 If b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 If b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 If b14->b15 0 b16 b16 If b15->b16 0 b18 b18 Ret b15->b18 1 b28 b28 If b16->b28 0 b19 b19 If b16->b19 1 b19->b28 0 b24 b24 If b19->b24 1 b34 b34 Ret b24->b34 0 b30 b30 If b24->b30 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 If b37->b38 0 b39 b39 If b38->b39 0 b41 b41 If b38->b41 1 b51 b51 If b39->b51 0 b42 b42 If b39->b42 1 b68 b68 If b41->b68 0 b66 b66 Ret b41->b66 1 b42->b51 0 b47 b47 If b42->b47 1 b55 b55 Ret b47->b55 0 b53 b53 If b47->b53 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 If b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 If b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 If b75->b78 0 b76 b76 If b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b84 b84 If b78->b84 0 b80 b80 Plain b78->b80 1 b80->b84 0 b85 b85 Plain b84->b85 0 b86 b86 Plain b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b90 b90 If b89->b90 0 b95 b95 Plain b90->b95 0 b93 b93 Ret b90->b93 1 b96 b96 If b95->b96 0 b97 b97 If b96->b97 0 b113 b113 Plain b96->b113 1 b105 b105 Plain b97->b105 0 b100 b100 If b97->b100 1 b100->b105 0 b104 b104 If b100->b104 1 b110 b110 Ret b104->b110 0 b106 b106 If b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (~R0[*stringStruct], p[unsafe.Pointer], sp[*string], key[*stringStruct])
      • v8 (13) = ArgIntReg <*abi.MapType> {t+0} [0] (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = ArgIntReg <*hmap> {h+0} [1] (h[*hmap], h[*hmap])
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (x[uintptr], x[uintptr], keymaybe[uintptr], x[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v173 (?) = Const64 <uintptr> [1]
      • v282 (?) = Const64 <uint> [8]
      • v291 (?) = Const64 <uint> [16]
      • v300 (?) = Const64 <uint> [24]
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v717 (+18) = IsNonNil <bool> v9
      • v661 (?) = Addr <*uint8> {go:string."concurrent map read and map write"} v3
      • v581 (?) = Const64 <int> [33]
      • v627 (62) = Const64 <uintptr> [-4]
      • v601 (+72) = Const64 <uintptr> [4]
      • v729 (+192) = Const64 <uintptr> [-1]
      • v690 (210) = Const64 <uintptr> [-8]
      • v623 (13) = ArgIntReg <*uint8> {ky+0} [2]
      • v617 (+13) = Store <mem> {*uint8} v6 v623 v1
      • v613 (13) = ArgIntReg <int> {ky+8} [3]
      • v537 (?) = OffPtr <*int> [8] v6
      • v524 (+13) = Store <mem> {int} v537 v613 v617
      • v628 (?) = Const64 <int64> [0]
    • If v717b2 b5 (18)
    • b2: ← b1
      • v18 (18) = OffPtr <*int> [0] v9
      • v19 (18) = Load <int> v18 v524
      • v21 (18) = Eq64 <bool> v19 v20
    • If v21b5 b4 (18)
    • b4: ← b2
      • v32 (21) = OffPtr <*uint8> [8] v9
      • v33 (+21) = Load <uint8> v32 v524
      • v35 (21) = And8 <uint8> v34 v33
      • v37 (21) = Neq8 <bool> v36 v35
    • If v37b7 b8 (21)
    • b5: ← b2 b1
      • v25 (19) = OffPtr <*byte> [0] v23
      • v27 (+19) = MakeResult <unsafe.Pointer,mem> v25 v524
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = StaticCall <mem> {AuxCall{runtime.fatal}} [16] v661 v581 v524
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v524 v41
      • v50 (25) = OffPtr <*uint8> [9] v9
      • v51 (+25) = Load <uint8> v50 v42
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v9
      • v57 (+27) = Load <unsafe.Pointer> v56 v42 (p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap])
      • v61 (28) = OffPtr <*int> [8] v6
      • v62 (+28) = Load <int> v61 v42
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v73 (+18) = OffPtr <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v78 (+30) = Less64U <bool> v77 v69
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v83 (32) = OffPtr <*int> [8] v816
      • v84 (+32) = Load <int> v83 v810
      • v88 (32) = Load <int> v61 v810
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b28 b19 (32)
    • b18: ← b15 b27
      • v177 (42) = OffPtr <*byte> [0] v23
      • v179 (+42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b16
      • v92 (32) = NilCheck <void> v57 v810
      • v93 (32) = OffPtr <*[8]uint8> [0] v57
      • v99 (32) = AddPtr <*uint8> v93 v77
      • v101 (32) = Load <uint8> v99 v810 (x[uint8])
      • v102 (32) = InlMark <void> [5608] v810
      • v104 (+113) = Leq8U <bool> v101 v103 (~R0[bool])
    • If v104b28 b24 (+32)
    • b20:
    • BlockInvalid (32)
    • b24: ← b19
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v123 (+38) = Load <unsafe.Pointer> v122 v810
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v127 (38) = Load <unsafe.Pointer> v126 v810
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b34 b30 (38)
    • b25:
    • BlockInvalid (33)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b19 b16
      • v109 (+33) = NilCheck <void> v57 v810
      • v110 (33) = OffPtr <*[8]uint8> [0] v57
      • v115 (33) = AddPtr <*uint8> v110 v77
      • v117 (33) = Load <uint8> v115 v810
      • v118 (33) = Eq8 <bool> v36 v117
    • If v118b27 b26 (33)
    • b30: ← b24
      • v142 (38) = StaticCall <bool,mem> {AuxCall{runtime.memequal}} [24] v123 v127 v88 v810
      • v144 (38) = SelectN <bool> [0] v142
      • v143 (38) = SelectN <mem> [1] v142
    • If v144b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v153 (39) = OffPtr <*uint8> [81] v8
      • v152 (+39) = NilCheck <void> v8 v703
      • v154 (39) = Load <uint8> v153 v703
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v77 v155
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v688 (18) = Add64 <uintptr> v159 v156
      • v160 (18) = Add64 <uintptr> v688 v148
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v171 (+18) = OffPtr <unsafe.Pointer> [16] v816 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v174 (+30) = Add64 <uintptr> v173 v77 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v188 (+18) = OffPtr <unsafe.Pointer> [8] v57 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (i[uintptr], keymaybe[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v192 (+46) = Less64U <bool> v191 v69
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v197 (48) = OffPtr <*int> [8] v794
      • v198 (+48) = Load <int> v197 v42
      • v203 (48) = Neq64 <bool> v198 v62
    • If v203b51 b42 (48)
    • b41: ← b38 b50
      • v431 (+71) = Neq64 <bool> v789 v69
    • If v431b68 b66 (71)
    • b42: ← b39
      • v206 (48) = NilCheck <void> v57 v42
      • v207 (48) = OffPtr <*[8]uint8> [0] v57
      • v212 (48) = AddPtr <*uint8> v207 v191
      • v214 (48) = Load <uint8> v212 v42 (x[uint8])
      • v215 (48) = InlMark <void> [5612] v42
      • v216 (+113) = Leq8U <bool> v214 v103 (~R0[bool])
    • If v216b51 b47 (+48)
    • b43:
    • BlockInvalid (48)
    • b47: ← b42
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v794
      • v235 (+54) = Load <unsafe.Pointer> v234 v42
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v6
      • v239 (54) = Load <unsafe.Pointer> v238 v42
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b55 b53 (54)
    • b48:
    • BlockInvalid (49)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b42 b39
      • v221 (+49) = NilCheck <void> v57 v42
      • v222 (49) = OffPtr <*[8]uint8> [0] v57
      • v227 (49) = AddPtr <*uint8> v222 v191
      • v229 (49) = Load <uint8> v227 v42
      • v230 (49) = Eq8 <bool> v36 v229
    • If v230b50 b49 (49)
    • b53: ← b47
      • v270 (+58) = NilCheck <void> v239 v42
      • v272 (58) = OffPtr <*byte> [0] v239
      • v273 (58) = Load <byte> v272 v42
      • v275 (58) = ZeroExt8to32 <uint32> v273
      • v278 (58) = OffPtr <*byte> [1] v239
      • v279 (58) = Load <byte> v278 v42
      • v281 (58) = ZeroExt8to32 <uint32> v279
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v287 (58) = OffPtr <*byte> [2] v239
      • v288 (58) = Load <byte> v287 v42
      • v290 (58) = ZeroExt8to32 <uint32> v288
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v296 (58) = OffPtr <*byte> [3] v239
      • v297 (58) = Load <byte> v296 v42
      • v299 (58) = ZeroExt8to32 <uint32> v297
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v302 (58) = Or32 <uint32> v293 v301
      • v303 (58) = NilCheck <void> v235 v42
      • v304 (58) = OffPtr <*byte> [0] v235
      • v305 (58) = Load <byte> v304 v42
      • v307 (58) = ZeroExt8to32 <uint32> v305
      • v309 (58) = OffPtr <*byte> [1] v235
      • v310 (58) = Load <byte> v309 v42
      • v312 (58) = ZeroExt8to32 <uint32> v310
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v316 (58) = OffPtr <*byte> [2] v235
      • v317 (58) = Load <byte> v316 v42
      • v319 (58) = ZeroExt8to32 <uint32> v317
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v323 (58) = OffPtr <*byte> [3] v235
      • v324 (58) = Load <byte> v323 v42
      • v326 (58) = ZeroExt8to32 <uint32> v324
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v328 (58) = Or32 <uint32> v321 v327
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = NilCheck <void> v8 v42
      • v247 (55) = OffPtr <*uint8> [81] v8
      • v248 (55) = Load <uint8> v247 v42
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v249 v191
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v635 (18) = Add64 <uintptr> v250 v253
      • v254 (18) = Add64 <uintptr> v635 v148
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v341 (+62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v239 v42
      • v356 (+62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v235 v42
      • v625 (18) = Add64 <uintptr> v357 v62
      • v632 (18) = Add64 <uintptr> v342 v62
      • v343 (18) = Add64 <uintptr> v632 v627
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v358 (18) = Add64 <uintptr> v627 v625
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = NilCheck <void> v344 v42
      • v366 (62) = OffPtr <*byte> [0] v344
      • v367 (62) = Load <byte> v366 v42
      • v369 (62) = ZeroExt8to32 <uint32> v367
      • v371 (62) = OffPtr <*byte> [1] v344
      • v372 (62) = Load <byte> v371 v42
      • v374 (62) = ZeroExt8to32 <uint32> v372
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v378 (62) = OffPtr <*byte> [2] v344
      • v379 (62) = Load <byte> v378 v42
      • v381 (62) = ZeroExt8to32 <uint32> v379
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v382 v376
      • v385 (62) = OffPtr <*byte> [3] v344
      • v386 (62) = Load <byte> v385 v42
      • v388 (62) = ZeroExt8to32 <uint32> v386
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v390 (62) = Or32 <uint32> v389 v383
      • v391 (62) = NilCheck <void> v359 v42
      • v392 (62) = OffPtr <*byte> [0] v359
      • v393 (62) = Load <byte> v392 v42
      • v395 (62) = ZeroExt8to32 <uint32> v393
      • v397 (62) = OffPtr <*byte> [1] v359
      • v398 (62) = Load <byte> v397 v42
      • v400 (62) = ZeroExt8to32 <uint32> v398
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v404 (62) = OffPtr <*byte> [2] v359
      • v405 (62) = Load <byte> v404 v42
      • v407 (62) = ZeroExt8to32 <uint32> v405
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v408 v402
      • v411 (62) = OffPtr <*byte> [3] v359
      • v412 (62) = Load <byte> v411 v42
      • v414 (62) = ZeroExt8to32 <uint32> v412
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v416 (62) = Or32 <uint32> v415 v409
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v419 (+65) = Neq64 <bool> v789 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v426 (+18) = OffPtr <unsafe.Pointer> [16] v794 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v428 (+46) = Add64 <uintptr> v173 v191 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (77) = OffPtr <*byte> [0] v23
      • v482 (+77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v437 (+72) = Lsh64x64 <uintptr> [false] v789 v601
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v6
      • v453 (73) = Load <unsafe.Pointer> v452 v42
      • v741 (18) = Add64 <uintptr> v437 v441
      • v442 (18) = Add64 <uintptr> v69 v741
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v443
      • v449 (73) = Load <unsafe.Pointer> v448 v42
      • v458 (73) = StaticCall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v62 v42
      • v460 (73) = SelectN <bool> [0] v458
      • v459 (73) = SelectN <mem> [1] v458
      • v447 (+73) = NilCheck <void> v443 v42
    • If v460b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = NilCheck <void> v8 v459
      • v467 (74) = OffPtr <*uint8> [81] v8
      • v468 (74) = Load <uint8> v467 v459
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v789 v469
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v734 (18) = Add64 <uintptr> v473 v470
      • v474 (18) = Add64 <uintptr> v734 v148
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v497 (80) = NilCheck <void> v8 v42
      • v493 (80) = OffPtr <*uint32> [12] v9
      • v494 (+80) = Load <uint32> v493 v42
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v498 (+80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v8
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v42
      • v501 (80) = Load <uintptr> v499 v42
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v9
      • v525 (82) = OffPtr <*uint16> [82] v8
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v9
      • v502 (80) = ClosureCall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v6 v495 v42
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v503 (80) = SelectN <mem> [1] v502
      • v507 (+81) = Load <uint8> v50 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (+187) = And8 <uint8> v510 v507
      • v512 (187) = Lsh64x8 <uintptr> [true] v173 v511 (~R0[uintptr])
      • v514 (+192) = Add64 <uintptr> v729 v512 (m[uintptr], ~R0[uintptr])
      • v520 (+82) = Load <unsafe.Pointer> v519 v503 (p[unsafe.Pointer])
      • v522 (82) = And64 <uintptr> v514 v504
      • v526 (82) = Load <uint16> v525 v503
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v529 (82) = InlMark <void> [5620] v503
      • v532 (+18) = AddPtr <unsafe.Pointer> v520 v528 (~R0[unsafe.Pointer], b[*bmap])
      • v539 (+83) = Load <unsafe.Pointer> v538 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v540 (83) = IsNonNil <bool> v539
    • If v540b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v588 (+197) = Rsh64Ux64 <uintptr> [false] v504 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (+198) = Less8U <bool> v589 v579
    • If v590b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v546 (+1128) = Load <uint8> v32 v503
      • v548 (1128) = And8 <uint8> v547 v546
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • If v549b84 b80 (+84)
    • b80: ← b78
      • v553 (+86) = Rsh64Ux64 <uintptr> [false] v514 v552 (m[uintptr])
    • Plainb84 (86)
    • b84: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v553 (m[uintptr])
      • v557 (+88) = And64 <uintptr> v556 v504
      • v564 (88) = Mul64 <uintptr> v557 v527 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v568 (+18) = AddPtr <unsafe.Pointer> v539 v564 (~R0[unsafe.Pointer], b[*bmap], b[*bmap], oldb[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v575 (205) = OffPtr <*uint8> [0] v568
      • v576 (+205) = Load <uint8> v575 v503 (h[uint8])
      • v492 (206) = Const8 <uint8> [3]
      • v454 (206) = Const8 <uint8> [-2]
      • v518 (206) = Add8 <uint8> v454 v576
      • v560 (+206) = Less8U <bool> v518 v492
    • If v560b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = Add8 <uint8> v589 v579 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (top[uint8], ~R0[uint8], top[uint8])
    • Plainb90 (+94)
    • b90: ← b89 b113
      • v595 (94) = Phi <*bmap> v756 v707 (b[*bmap], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer])
      • v753 (105) = Phi <mem> v503 v751
      • v597 (+94) = IsNonNil <bool> v595
    • If v597b95 b93 (likely) (94)
    • b93: ← b90
      • v710 (105) = OffPtr <*byte> [0] v23
      • v712 (+105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v753
      • v602 (+218) = InlMark <void> [5633] v753
      • v605 (+18) = OffPtr <unsafe.Pointer> [8] v595 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v753 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v609 (+95) = Less64U <bool> v608 v69
    • If v609b97 b113 (likely) (95)
    • b97: ← b96
      • v614 (97) = OffPtr <*int> [8] v752
      • v615 (+97) = Load <int> v614 v751
      • v618 (97) = OffPtr <*int> [8] v6
      • v619 (97) = Load <int> v618 v751
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b105 b100 (97)
    • b100: ← b97
      • v624 (97) = OffPtr <*[8]uint8> [0] v595
      • v629 (97) = AddPtr <*uint8> v624 v608
      • v631 (97) = Load <uint8> v629 v751
      • v633 (97) = Neq8 <bool> v593 v631
    • If v633b105 b104 (97)
    • b101:
    • BlockInvalid (97)
    • b104: ← b100
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v639 (+100) = Load <unsafe.Pointer> v638 v751
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v643 (100) = Load <unsafe.Pointer> v642 v751
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v658 (100) = StaticCall <bool,mem> {AuxCall{runtime.memequal}} [24] v639 v643 v619 v751
      • v660 (100) = SelectN <bool> [0] v658
      • v659 (100) = SelectN <mem> [1] v658
    • If v660b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v668 (101) = OffPtr <*uint8> [81] v8
      • v669 (+101) = Load <uint8> v668 v704
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v608 v670
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v595 v704
      • v691 (18) = Add64 <uintptr> v674 v671
      • v675 (18) = Add64 <uintptr> v691 v148
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v685 (+18) = OffPtr <unsafe.Pointer> [16] v752 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v687 (+95) = Add64 <uintptr> v608 v173 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v696 (+210) = Load <uint16> v525 v751
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v699 (210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v595 v751
      • v689 (18) = Add64 <uintptr> v700 v697
      • v701 (18) = Add64 <uintptr> v690 v689
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = NilCheck <void> v702 v751
      • v707 (210) = Load <*bmap> v702 v751 (~R0[*bmap], b[*bmap])
    • Plainb90 (+94)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v255
  • name ~R0[unsafe.Pointer]: v344
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v595 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name ~R0[unsafe.Pointer]: v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • dse [34306 ns]

    memcombine [36563 ns]

    b1 b1 If b2 b2 If b1->b2 0 b5 b5 Ret b1->b5 1 b2->b5 0 b4 b4 If b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 If b4->b8 1 b7->b8 0 b10 b10 If b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 If b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 If b14->b15 0 b16 b16 If b15->b16 0 b18 b18 Ret b15->b18 1 b28 b28 If b16->b28 0 b19 b19 If b16->b19 1 b19->b28 0 b24 b24 If b19->b24 1 b34 b34 Ret b24->b34 0 b30 b30 If b24->b30 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 If b37->b38 0 b39 b39 If b38->b39 0 b41 b41 If b38->b41 1 b51 b51 If b39->b51 0 b42 b42 If b39->b42 1 b68 b68 If b41->b68 0 b66 b66 Ret b41->b66 1 b42->b51 0 b47 b47 If b42->b47 1 b55 b55 Ret b47->b55 0 b53 b53 If b47->b53 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 If b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 If b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 If b75->b78 0 b76 b76 If b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b84 b84 If b78->b84 0 b80 b80 Plain b78->b80 1 b80->b84 0 b85 b85 Plain b84->b85 0 b86 b86 Plain b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b90 b90 If b89->b90 0 b95 b95 Plain b90->b95 0 b93 b93 Ret b90->b93 1 b96 b96 If b95->b96 0 b97 b97 If b96->b97 0 b113 b113 Plain b96->b113 1 b105 b105 Plain b97->b105 0 b100 b100 If b97->b100 1 b100->b105 0 b104 b104 If b100->b104 1 b110 b110 Ret b104->b110 0 b106 b106 If b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (p[unsafe.Pointer], sp[*string], key[*stringStruct], ~R0[*stringStruct])
      • v8 (13) = ArgIntReg <*abi.MapType> {t+0} [0] (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = ArgIntReg <*hmap> {h+0} [1] (h[*hmap], h[*hmap])
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (x[uintptr], keymaybe[uintptr], x[uintptr], x[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v173 (?) = Const64 <uintptr> [1]
      • v282 (?) = Const64 <uint> [8]
      • v291 (?) = Const64 <uint> [16]
      • v300 (?) = Const64 <uint> [24]
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v717 (+18) = IsNonNil <bool> v9
      • v661 (?) = Addr <*uint8> {go:string."concurrent map read and map write"} v3
      • v581 (?) = Const64 <int> [33]
      • v627 (62) = Const64 <uintptr> [-4]
      • v601 (+72) = Const64 <uintptr> [4]
      • v729 (+192) = Const64 <uintptr> [-1]
      • v690 (210) = Const64 <uintptr> [-8]
      • v623 (13) = ArgIntReg <*uint8> {ky+0} [2]
      • v617 (+13) = Store <mem> {*uint8} v6 v623 v1
      • v613 (13) = ArgIntReg <int> {ky+8} [3]
      • v537 (?) = OffPtr <*int> [8] v6
      • v524 (+13) = Store <mem> {int} v537 v613 v617
      • v628 (?) = Const64 <int64> [0]
    • If v717b2 b5 (18)
    • b2: ← b1
      • v18 (18) = OffPtr <*int> [0] v9
      • v19 (18) = Load <int> v18 v524
      • v21 (18) = Eq64 <bool> v19 v20
    • If v21b5 b4 (18)
    • b4: ← b2
      • v32 (21) = OffPtr <*uint8> [8] v9
      • v33 (+21) = Load <uint8> v32 v524
      • v35 (21) = And8 <uint8> v34 v33
      • v37 (21) = Neq8 <bool> v36 v35
    • If v37b7 b8 (21)
    • b5: ← b2 b1
      • v25 (19) = OffPtr <*byte> [0] v23
      • v27 (+19) = MakeResult <unsafe.Pointer,mem> v25 v524
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = StaticCall <mem> {AuxCall{runtime.fatal}} [16] v661 v581 v524
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v524 v41
      • v50 (25) = OffPtr <*uint8> [9] v9
      • v51 (+25) = Load <uint8> v50 v42
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v9
      • v57 (+27) = Load <unsafe.Pointer> v56 v42 (p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer])
      • v61 (28) = OffPtr <*int> [8] v6
      • v62 (+28) = Load <int> v61 v42
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v73 (+18) = OffPtr <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v78 (+30) = Less64U <bool> v77 v69
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v83 (32) = OffPtr <*int> [8] v816
      • v84 (+32) = Load <int> v83 v810
      • v88 (32) = Load <int> v61 v810
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b28 b19 (32)
    • b18: ← b15 b27
      • v177 (42) = OffPtr <*byte> [0] v23
      • v179 (+42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b16
      • v92 (32) = NilCheck <void> v57 v810
      • v93 (32) = OffPtr <*[8]uint8> [0] v57
      • v99 (32) = AddPtr <*uint8> v93 v77
      • v101 (32) = Load <uint8> v99 v810 (x[uint8])
      • v102 (32) = InlMark <void> [5608] v810
      • v104 (+113) = Leq8U <bool> v101 v103 (~R0[bool])
    • If v104b28 b24 (+32)
    • b20:
    • BlockInvalid (32)
    • b24: ← b19
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v123 (+38) = Load <unsafe.Pointer> v122 v810
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v127 (38) = Load <unsafe.Pointer> v126 v810
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b34 b30 (38)
    • b25:
    • BlockInvalid (33)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b19 b16
      • v109 (+33) = NilCheck <void> v57 v810
      • v110 (33) = OffPtr <*[8]uint8> [0] v57
      • v115 (33) = AddPtr <*uint8> v110 v77
      • v117 (33) = Load <uint8> v115 v810
      • v118 (33) = Eq8 <bool> v36 v117
    • If v118b27 b26 (33)
    • b30: ← b24
      • v142 (38) = StaticCall <bool,mem> {AuxCall{runtime.memequal}} [24] v123 v127 v88 v810
      • v144 (38) = SelectN <bool> [0] v142
      • v143 (38) = SelectN <mem> [1] v142
    • If v144b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v153 (39) = OffPtr <*uint8> [81] v8
      • v152 (+39) = NilCheck <void> v8 v703
      • v154 (39) = Load <uint8> v153 v703
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v77 v155
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v688 (18) = Add64 <uintptr> v159 v156
      • v160 (18) = Add64 <uintptr> v688 v148
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v171 (+18) = OffPtr <unsafe.Pointer> [16] v816 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v174 (+30) = Add64 <uintptr> v173 v77 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v188 (+18) = OffPtr <unsafe.Pointer> [8] v57 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (keymaybe[uintptr], i[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v192 (+46) = Less64U <bool> v191 v69
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v197 (48) = OffPtr <*int> [8] v794
      • v198 (+48) = Load <int> v197 v42
      • v203 (48) = Neq64 <bool> v198 v62
    • If v203b51 b42 (48)
    • b41: ← b38 b50
      • v431 (+71) = Neq64 <bool> v789 v69
    • If v431b68 b66 (71)
    • b42: ← b39
      • v206 (48) = NilCheck <void> v57 v42
      • v207 (48) = OffPtr <*[8]uint8> [0] v57
      • v212 (48) = AddPtr <*uint8> v207 v191
      • v214 (48) = Load <uint8> v212 v42 (x[uint8])
      • v215 (48) = InlMark <void> [5612] v42
      • v216 (+113) = Leq8U <bool> v214 v103 (~R0[bool])
    • If v216b51 b47 (+48)
    • b43:
    • BlockInvalid (48)
    • b47: ← b42
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v794
      • v235 (+54) = Load <unsafe.Pointer> v234 v42
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v6
      • v239 (54) = Load <unsafe.Pointer> v238 v42
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b55 b53 (54)
    • b48:
    • BlockInvalid (49)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b42 b39
      • v221 (+49) = NilCheck <void> v57 v42
      • v222 (49) = OffPtr <*[8]uint8> [0] v57
      • v227 (49) = AddPtr <*uint8> v222 v191
      • v229 (49) = Load <uint8> v227 v42
      • v230 (49) = Eq8 <bool> v36 v229
    • If v230b50 b49 (49)
    • b53: ← b47
      • v270 (+58) = NilCheck <void> v239 v42
      • v272 (58) = OffPtr <*byte> [0] v239
      • v273 (58) = OpInvalid <byte>
      • v275 (58) = ZeroExt8to32 <uint32> v273
      • v278 (58) = OffPtr <*byte> [1] v239
      • v279 (58) = OpInvalid <byte>
      • v281 (58) = ZeroExt8to32 <uint32> v279
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v287 (58) = OffPtr <*byte> [2] v239
      • v288 (58) = OpInvalid <byte>
      • v290 (58) = ZeroExt8to32 <uint32> v288
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v296 (58) = OffPtr <*byte> [3] v239
      • v297 (58) = OpInvalid <byte>
      • v299 (58) = ZeroExt8to32 <uint32> v297
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v303 (58) = NilCheck <void> v235 v42
      • v304 (58) = OffPtr <*byte> [0] v235
      • v305 (58) = OpInvalid <byte>
      • v307 (58) = ZeroExt8to32 <uint32> v305
      • v309 (58) = OffPtr <*byte> [1] v235
      • v310 (58) = OpInvalid <byte>
      • v312 (58) = ZeroExt8to32 <uint32> v310
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v316 (58) = OffPtr <*byte> [2] v235
      • v317 (58) = OpInvalid <byte>
      • v319 (58) = ZeroExt8to32 <uint32> v317
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v323 (58) = OffPtr <*byte> [3] v235
      • v324 (58) = OpInvalid <byte>
      • v326 (58) = ZeroExt8to32 <uint32> v324
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v226 (58) = Load <uint32> v272 v42
      • v211 (58) = Load <uint32> v304 v42
      • v302 (58) = Copy <uint32> v226
      • v328 (58) = Copy <uint32> v211
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = NilCheck <void> v8 v42
      • v247 (55) = OffPtr <*uint8> [81] v8
      • v248 (55) = Load <uint8> v247 v42
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v249 v191
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v635 (18) = Add64 <uintptr> v250 v253
      • v254 (18) = Add64 <uintptr> v635 v148
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v341 (+62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v239 v42
      • v356 (+62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v235 v42
      • v367 (62) = OpInvalid <byte>
      • v369 (62) = ZeroExt8to32 <uint32> v367
      • v372 (62) = OpInvalid <byte>
      • v374 (62) = ZeroExt8to32 <uint32> v372
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v379 (62) = OpInvalid <byte>
      • v381 (62) = ZeroExt8to32 <uint32> v379
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v382 v376
      • v386 (62) = OpInvalid <byte>
      • v388 (62) = ZeroExt8to32 <uint32> v386
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v393 (62) = OpInvalid <byte>
      • v395 (62) = ZeroExt8to32 <uint32> v393
      • v398 (62) = OpInvalid <byte>
      • v400 (62) = ZeroExt8to32 <uint32> v398
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v405 (62) = OpInvalid <byte>
      • v407 (62) = ZeroExt8to32 <uint32> v405
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v408 v402
      • v412 (62) = OpInvalid <byte>
      • v414 (62) = ZeroExt8to32 <uint32> v412
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v625 (18) = Add64 <uintptr> v357 v62
      • v632 (18) = Add64 <uintptr> v342 v62
      • v343 (18) = Add64 <uintptr> v632 v627
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v358 (18) = Add64 <uintptr> v627 v625
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = NilCheck <void> v344 v42
      • v366 (62) = OffPtr <*byte> [0] v344
      • v371 (62) = OffPtr <*byte> [1] v344
      • v378 (62) = OffPtr <*byte> [2] v344
      • v385 (62) = OffPtr <*byte> [3] v344
      • v391 (62) = NilCheck <void> v359 v42
      • v392 (62) = OffPtr <*byte> [0] v359
      • v397 (62) = OffPtr <*byte> [1] v359
      • v404 (62) = OffPtr <*byte> [2] v359
      • v411 (62) = OffPtr <*byte> [3] v359
      • v114 (62) = Load <uint32> v366 v42
      • v98 (62) = Load <uint32> v392 v42
      • v390 (62) = Copy <uint32> v114
      • v416 (62) = Copy <uint32> v98
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v419 (+65) = Neq64 <bool> v789 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v426 (+18) = OffPtr <unsafe.Pointer> [16] v794 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v428 (+46) = Add64 <uintptr> v173 v191 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (77) = OffPtr <*byte> [0] v23
      • v482 (+77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v437 (+72) = Lsh64x64 <uintptr> [false] v789 v601
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v6
      • v453 (73) = Load <unsafe.Pointer> v452 v42
      • v741 (18) = Add64 <uintptr> v437 v441
      • v442 (18) = Add64 <uintptr> v69 v741
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v443
      • v449 (73) = Load <unsafe.Pointer> v448 v42
      • v458 (73) = StaticCall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v62 v42
      • v460 (73) = SelectN <bool> [0] v458
      • v459 (73) = SelectN <mem> [1] v458
      • v447 (+73) = NilCheck <void> v443 v42
    • If v460b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = NilCheck <void> v8 v459
      • v467 (74) = OffPtr <*uint8> [81] v8
      • v468 (74) = Load <uint8> v467 v459
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v789 v469
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v734 (18) = Add64 <uintptr> v473 v470
      • v474 (18) = Add64 <uintptr> v734 v148
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v497 (80) = NilCheck <void> v8 v42
      • v493 (80) = OffPtr <*uint32> [12] v9
      • v494 (+80) = Load <uint32> v493 v42
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v498 (+80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v8
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v42
      • v501 (80) = Load <uintptr> v499 v42
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v9
      • v525 (82) = OffPtr <*uint16> [82] v8
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v9
      • v502 (80) = ClosureCall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v6 v495 v42
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v503 (80) = SelectN <mem> [1] v502
      • v507 (+81) = Load <uint8> v50 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (+187) = And8 <uint8> v510 v507
      • v512 (187) = Lsh64x8 <uintptr> [true] v173 v511 (~R0[uintptr])
      • v514 (+192) = Add64 <uintptr> v729 v512 (m[uintptr], ~R0[uintptr])
      • v520 (+82) = Load <unsafe.Pointer> v519 v503 (p[unsafe.Pointer])
      • v522 (82) = And64 <uintptr> v514 v504
      • v526 (82) = Load <uint16> v525 v503
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v529 (82) = InlMark <void> [5620] v503
      • v532 (+18) = AddPtr <unsafe.Pointer> v520 v528 (~R0[unsafe.Pointer], b[*bmap])
      • v539 (+83) = Load <unsafe.Pointer> v538 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v540 (83) = IsNonNil <bool> v539
    • If v540b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v588 (+197) = Rsh64Ux64 <uintptr> [false] v504 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (+198) = Less8U <bool> v589 v579
    • If v590b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v546 (+1128) = Load <uint8> v32 v503
      • v548 (1128) = And8 <uint8> v547 v546
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • If v549b84 b80 (+84)
    • b80: ← b78
      • v553 (+86) = Rsh64Ux64 <uintptr> [false] v514 v552 (m[uintptr])
    • Plainb84 (86)
    • b84: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v553 (m[uintptr])
      • v557 (+88) = And64 <uintptr> v556 v504
      • v564 (88) = Mul64 <uintptr> v557 v527 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v568 (+18) = AddPtr <unsafe.Pointer> v539 v564 (b[*bmap], ~R0[unsafe.Pointer], b[*bmap], oldb[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v575 (205) = OffPtr <*uint8> [0] v568
      • v576 (+205) = Load <uint8> v575 v503 (h[uint8])
      • v492 (206) = Const8 <uint8> [3]
      • v454 (206) = Const8 <uint8> [-2]
      • v518 (206) = Add8 <uint8> v454 v576
      • v560 (+206) = Less8U <bool> v518 v492
    • If v560b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = Add8 <uint8> v589 v579 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (top[uint8], ~R0[uint8], top[uint8])
    • Plainb90 (+94)
    • b90: ← b89 b113
      • v595 (94) = Phi <*bmap> v756 v707 (p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap])
      • v753 (105) = Phi <mem> v503 v751
      • v597 (+94) = IsNonNil <bool> v595
    • If v597b95 b93 (likely) (94)
    • b93: ← b90
      • v710 (105) = OffPtr <*byte> [0] v23
      • v712 (+105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v753
      • v602 (+218) = InlMark <void> [5633] v753
      • v605 (+18) = OffPtr <unsafe.Pointer> [8] v595 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v753 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v609 (+95) = Less64U <bool> v608 v69
    • If v609b97 b113 (likely) (95)
    • b97: ← b96
      • v614 (97) = OffPtr <*int> [8] v752
      • v615 (+97) = Load <int> v614 v751
      • v618 (97) = OffPtr <*int> [8] v6
      • v619 (97) = Load <int> v618 v751
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b105 b100 (97)
    • b100: ← b97
      • v624 (97) = OffPtr <*[8]uint8> [0] v595
      • v629 (97) = AddPtr <*uint8> v624 v608
      • v631 (97) = Load <uint8> v629 v751
      • v633 (97) = Neq8 <bool> v593 v631
    • If v633b105 b104 (97)
    • b101:
    • BlockInvalid (97)
    • b104: ← b100
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v639 (+100) = Load <unsafe.Pointer> v638 v751
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v643 (100) = Load <unsafe.Pointer> v642 v751
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v658 (100) = StaticCall <bool,mem> {AuxCall{runtime.memequal}} [24] v639 v643 v619 v751
      • v660 (100) = SelectN <bool> [0] v658
      • v659 (100) = SelectN <mem> [1] v658
    • If v660b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v668 (101) = OffPtr <*uint8> [81] v8
      • v669 (+101) = Load <uint8> v668 v704
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v608 v670
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v595 v704
      • v691 (18) = Add64 <uintptr> v674 v671
      • v675 (18) = Add64 <uintptr> v691 v148
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v685 (+18) = OffPtr <unsafe.Pointer> [16] v752 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v687 (+95) = Add64 <uintptr> v608 v173 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v696 (+210) = Load <uint16> v525 v751
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v699 (210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v595 v751
      • v689 (18) = Add64 <uintptr> v700 v697
      • v701 (18) = Add64 <uintptr> v690 v689
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = NilCheck <void> v702 v751
      • v707 (210) = Load <*bmap> v702 v751 (b[*bmap], ~R0[*bmap])
    • Plainb90 (+94)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v255
  • name ~R0[unsafe.Pointer]: v344
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v595 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name ~R0[unsafe.Pointer]: v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • writebarrier [16139 ns]

    loop invariant code motion [88286 ns]

    b1 b1 If b2 b2 If b1->b2 0 b5 b5 Ret b1->b5 1 b2->b5 0 b4 b4 If b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 If b4->b8 1 b7->b8 0 b10 b10 If b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 If b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 If b14->b15 0 b16 b16 If b15->b16 0 b18 b18 Ret b15->b18 1 b28 b28 If b16->b28 0 b19 b19 If b16->b19 1 b19->b28 0 b24 b24 If b19->b24 1 b34 b34 Ret b24->b34 0 b30 b30 If b24->b30 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 If b37->b38 0 b39 b39 If b38->b39 0 b41 b41 If b38->b41 1 b51 b51 If b39->b51 0 b42 b42 If b39->b42 1 b68 b68 If b41->b68 0 b66 b66 Ret b41->b66 1 b42->b51 0 b47 b47 If b42->b47 1 b55 b55 Ret b47->b55 0 b53 b53 If b47->b53 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 If b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 If b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 If b75->b78 0 b76 b76 If b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b84 b84 If b78->b84 0 b80 b80 Plain b78->b80 1 b80->b84 0 b85 b85 Plain b84->b85 0 b86 b86 Plain b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b103 b103 If b89->b103 0 b90 b90 Plain b95 b95 Plain b90->b95 0 b93 b93 Ret b96 b96 If b95->b96 0 b97 b97 If b96->b97 0 b113 b113 If b96->b113 1 b105 b105 Plain b97->b105 0 b100 b100 If b97->b100 1 b100->b105 0 b104 b104 If b100->b104 1 b110 b110 Ret b104->b110 0 b106 b106 If b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0 b113->b93 1 b103->b90 0 b103->b93 1
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v6 (?) = LocalAddr <*string> {ky} v2 v1 (~R0[*stringStruct], p[unsafe.Pointer], sp[*string], key[*stringStruct])
      • v8 (13) = ArgIntReg <*abi.MapType> {t+0} [0] (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = ArgIntReg <*hmap> {h+0} [1] (h[*hmap], h[*hmap])
      • v20 (?) = Const64 <int> [0]
      • v23 (?) = Addr <*[1024]byte> {runtime.zeroVal} v3
      • v34 (?) = Const8 <uint8> [4]
      • v36 (?) = Const8 <uint8> [0]
      • v63 (?) = Const64 <int> [32]
      • v69 (?) = Const64 <uintptr> [8] (x[uintptr], x[uintptr], keymaybe[uintptr], x[uintptr])
      • v75 (?) = Const64 <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v103 (?) = Const8 <uint8> [1]
      • v148 (?) = Const64 <uintptr> [136]
      • v173 (?) = Const64 <uintptr> [1]
      • v282 (?) = Const64 <uint> [8]
      • v291 (?) = Const64 <uint> [16]
      • v300 (?) = Const64 <uint> [24]
      • v510 (?) = Const8 <uint8> [63]
      • v547 (?) = Const8 <uint8> [8]
      • v552 (?) = Const64 <uint> [1]
      • v579 (?) = Const8 <uint8> [5]
      • v587 (?) = Const64 <uint> [56]
      • v717 (+18) = IsNonNil <bool> v9
      • v661 (?) = Addr <*uint8> {go:string."concurrent map read and map write"} v3
      • v581 (?) = Const64 <int> [33]
      • v627 (62) = Const64 <uintptr> [-4]
      • v601 (+72) = Const64 <uintptr> [4]
      • v729 (+192) = Const64 <uintptr> [-1]
      • v690 (210) = Const64 <uintptr> [-8]
      • v623 (13) = ArgIntReg <*uint8> {ky+0} [2]
      • v617 (+13) = Store <mem> {*uint8} v6 v623 v1
      • v613 (13) = ArgIntReg <int> {ky+8} [3]
      • v537 (?) = OffPtr <*int> [8] v6
      • v524 (+13) = Store <mem> {int} v537 v613 v617
      • v628 (?) = Const64 <int64> [0]
    • If v717b2 b5 (18)
    • b2: ← b1
      • v18 (18) = OffPtr <*int> [0] v9
      • v19 (18) = Load <int> v18 v524
      • v21 (18) = Eq64 <bool> v19 v20
    • If v21b5 b4 (18)
    • b4: ← b2
      • v32 (21) = OffPtr <*uint8> [8] v9
      • v33 (+21) = Load <uint8> v32 v524
      • v35 (21) = And8 <uint8> v34 v33
      • v37 (21) = Neq8 <bool> v36 v35
    • If v37b7 b8 (21)
    • b5: ← b2 b1
      • v25 (19) = OffPtr <*byte> [0] v23
      • v27 (+19) = MakeResult <unsafe.Pointer,mem> v25 v524
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = StaticCall <mem> {AuxCall{runtime.fatal}} [16] v661 v581 v524
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v524 v41
      • v50 (25) = OffPtr <*uint8> [9] v9
      • v51 (+25) = Load <uint8> v50 v42
      • v52 (25) = Eq8 <bool> v51 v36
    • If v52b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v56 (27) = OffPtr <*unsafe.Pointer> [16] v9
      • v57 (+27) = Load <unsafe.Pointer> v56 v42 (p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer])
      • v61 (28) = OffPtr <*int> [8] v6
      • v62 (+28) = Load <int> v61 v42
      • v64 (28) = Less64 <bool> v62 v63
    • If v64b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v73 (+18) = OffPtr <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v78 (+30) = Less64U <bool> v77 v69
    • If v78b16 b18 (likely) (30)
    • b16: ← b15
      • v83 (32) = OffPtr <*int> [8] v816
      • v84 (+32) = Load <int> v83 v810
      • v88 (32) = Load <int> v61 v810
      • v89 (32) = Neq64 <bool> v84 v88
    • If v89b28 b19 (32)
    • b18: ← b15 b27
      • v177 (42) = OffPtr <*byte> [0] v23
      • v179 (+42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b16
      • v92 (32) = NilCheck <void> v57 v810
      • v93 (32) = OffPtr <*[8]uint8> [0] v57
      • v99 (32) = AddPtr <*uint8> v93 v77
      • v101 (32) = Load <uint8> v99 v810 (x[uint8])
      • v102 (32) = InlMark <void> [5608] v810
      • v104 (+113) = Leq8U <bool> v101 v103 (~R0[bool])
    • If v104b28 b24 (+32)
    • b20:
    • BlockInvalid (32)
    • b24: ← b19
      • v122 (38) = OffPtr <*unsafe.Pointer> [0] v816
      • v123 (+38) = Load <unsafe.Pointer> v122 v810
      • v126 (38) = OffPtr <*unsafe.Pointer> [0] v6
      • v127 (38) = Load <unsafe.Pointer> v126 v810
      • v128 (38) = EqPtr <bool> v123 v127
    • If v128b34 b30 (38)
    • b25:
    • BlockInvalid (33)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b19 b16
      • v109 (+33) = NilCheck <void> v57 v810
      • v110 (33) = OffPtr <*[8]uint8> [0] v57
      • v115 (33) = AddPtr <*uint8> v110 v77
      • v117 (33) = Load <uint8> v115 v810
      • v118 (33) = Eq8 <bool> v36 v117
    • If v118b27 b26 (33)
    • b30: ← b24
      • v142 (38) = StaticCall <bool,mem> {AuxCall{runtime.memequal}} [24] v123 v127 v88 v810
      • v144 (38) = SelectN <bool> [0] v142
      • v143 (38) = SelectN <mem> [1] v142
    • If v144b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v153 (39) = OffPtr <*uint8> [81] v8
      • v152 (+39) = NilCheck <void> v8 v703
      • v154 (39) = Load <uint8> v153 v703
      • v155 (39) = ZeroExt8to64 <uintptr> v154
      • v156 (39) = Mul64 <uintptr> v77 v155
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v688 (18) = Add64 <uintptr> v159 v156
      • v160 (18) = Add64 <uintptr> v688 v148
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v171 (+18) = OffPtr <unsafe.Pointer> [16] v816 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v174 (+30) = Add64 <uintptr> v173 v77 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v188 (+18) = OffPtr <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (i[uintptr], keymaybe[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v192 (+46) = Less64U <bool> v191 v69
    • If v192b39 b41 (likely) (46)
    • b39: ← b38
      • v197 (48) = OffPtr <*int> [8] v794
      • v198 (+48) = Load <int> v197 v42
      • v203 (48) = Neq64 <bool> v198 v62
    • If v203b51 b42 (48)
    • b41: ← b38 b50
      • v431 (+71) = Neq64 <bool> v789 v69
    • If v431b68 b66 (71)
    • b42: ← b39
      • v206 (48) = NilCheck <void> v57 v42
      • v207 (48) = OffPtr <*[8]uint8> [0] v57
      • v212 (48) = AddPtr <*uint8> v207 v191
      • v214 (48) = Load <uint8> v212 v42 (x[uint8])
      • v215 (48) = InlMark <void> [5612] v42
      • v216 (+113) = Leq8U <bool> v214 v103 (~R0[bool])
    • If v216b51 b47 (+48)
    • b43:
    • BlockInvalid (48)
    • b47: ← b42
      • v234 (54) = OffPtr <*unsafe.Pointer> [0] v794
      • v235 (+54) = Load <unsafe.Pointer> v234 v42
      • v238 (54) = OffPtr <*unsafe.Pointer> [0] v6
      • v239 (54) = Load <unsafe.Pointer> v238 v42
      • v240 (54) = EqPtr <bool> v235 v239
    • If v240b55 b53 (54)
    • b48:
    • BlockInvalid (49)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b42 b39
      • v221 (+49) = NilCheck <void> v57 v42
      • v222 (49) = OffPtr <*[8]uint8> [0] v57
      • v227 (49) = AddPtr <*uint8> v222 v191
      • v229 (49) = Load <uint8> v227 v42
      • v230 (49) = Eq8 <bool> v36 v229
    • If v230b50 b49 (49)
    • b53: ← b47
      • v270 (+58) = NilCheck <void> v239 v42
      • v272 (58) = OffPtr <*byte> [0] v239
      • v273 (58) = OpInvalid <byte>
      • v275 (58) = ZeroExt8to32 <uint32> v273
      • v278 (58) = OffPtr <*byte> [1] v239
      • v279 (58) = OpInvalid <byte>
      • v281 (58) = ZeroExt8to32 <uint32> v279
      • v283 (58) = Lsh32x64 <uint32> [false] v281 v282
      • v284 (58) = Or32 <uint32> v275 v283
      • v287 (58) = OffPtr <*byte> [2] v239
      • v288 (58) = OpInvalid <byte>
      • v290 (58) = ZeroExt8to32 <uint32> v288
      • v292 (58) = Lsh32x64 <uint32> [false] v290 v291
      • v293 (58) = Or32 <uint32> v284 v292
      • v296 (58) = OffPtr <*byte> [3] v239
      • v297 (58) = OpInvalid <byte>
      • v299 (58) = ZeroExt8to32 <uint32> v297
      • v301 (58) = Lsh32x64 <uint32> [false] v299 v300
      • v303 (58) = NilCheck <void> v235 v42
      • v304 (58) = OffPtr <*byte> [0] v235
      • v305 (58) = OpInvalid <byte>
      • v307 (58) = ZeroExt8to32 <uint32> v305
      • v309 (58) = OffPtr <*byte> [1] v235
      • v310 (58) = OpInvalid <byte>
      • v312 (58) = ZeroExt8to32 <uint32> v310
      • v313 (58) = Lsh32x64 <uint32> [false] v312 v282
      • v314 (58) = Or32 <uint32> v307 v313
      • v316 (58) = OffPtr <*byte> [2] v235
      • v317 (58) = OpInvalid <byte>
      • v319 (58) = ZeroExt8to32 <uint32> v317
      • v320 (58) = Lsh32x64 <uint32> [false] v319 v291
      • v321 (58) = Or32 <uint32> v314 v320
      • v323 (58) = OffPtr <*byte> [3] v235
      • v324 (58) = OpInvalid <byte>
      • v326 (58) = ZeroExt8to32 <uint32> v324
      • v327 (58) = Lsh32x64 <uint32> [false] v326 v300
      • v226 (58) = Load <uint32> v272 v42
      • v211 (58) = Load <uint32> v304 v42
      • v302 (58) = Copy <uint32> v226
      • v328 (58) = Copy <uint32> v211
      • v329 (58) = Neq32 <bool> v302 v328
    • If v329b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = NilCheck <void> v8 v42
      • v247 (55) = OffPtr <*uint8> [81] v8
      • v248 (55) = Load <uint8> v247 v42
      • v249 (55) = ZeroExt8to64 <uintptr> v248
      • v250 (55) = Mul64 <uintptr> v249 v191
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v635 (18) = Add64 <uintptr> v250 v253
      • v254 (18) = Add64 <uintptr> v635 v148
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v341 (+62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v239 v42
      • v356 (+62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v235 v42
      • v367 (62) = OpInvalid <byte>
      • v369 (62) = ZeroExt8to32 <uint32> v367
      • v372 (62) = OpInvalid <byte>
      • v374 (62) = ZeroExt8to32 <uint32> v372
      • v375 (62) = Lsh32x64 <uint32> [false] v374 v282
      • v376 (62) = Or32 <uint32> v369 v375
      • v379 (62) = OpInvalid <byte>
      • v381 (62) = ZeroExt8to32 <uint32> v379
      • v382 (62) = Lsh32x64 <uint32> [false] v381 v291
      • v383 (62) = Or32 <uint32> v382 v376
      • v386 (62) = OpInvalid <byte>
      • v388 (62) = ZeroExt8to32 <uint32> v386
      • v389 (62) = Lsh32x64 <uint32> [false] v388 v300
      • v393 (62) = OpInvalid <byte>
      • v395 (62) = ZeroExt8to32 <uint32> v393
      • v398 (62) = OpInvalid <byte>
      • v400 (62) = ZeroExt8to32 <uint32> v398
      • v401 (62) = Lsh32x64 <uint32> [false] v400 v282
      • v402 (62) = Or32 <uint32> v395 v401
      • v405 (62) = OpInvalid <byte>
      • v407 (62) = ZeroExt8to32 <uint32> v405
      • v408 (62) = Lsh32x64 <uint32> [false] v407 v291
      • v409 (62) = Or32 <uint32> v408 v402
      • v412 (62) = OpInvalid <byte>
      • v414 (62) = ZeroExt8to32 <uint32> v412
      • v415 (62) = Lsh32x64 <uint32> [false] v414 v300
      • v625 (18) = Add64 <uintptr> v357 v62
      • v632 (18) = Add64 <uintptr> v342 v62
      • v343 (18) = Add64 <uintptr> v632 v627
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v358 (18) = Add64 <uintptr> v627 v625
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = NilCheck <void> v344 v42
      • v366 (62) = OffPtr <*byte> [0] v344
      • v371 (62) = OffPtr <*byte> [1] v344
      • v378 (62) = OffPtr <*byte> [2] v344
      • v385 (62) = OffPtr <*byte> [3] v344
      • v391 (62) = NilCheck <void> v359 v42
      • v392 (62) = OffPtr <*byte> [0] v359
      • v397 (62) = OffPtr <*byte> [1] v359
      • v404 (62) = OffPtr <*byte> [2] v359
      • v411 (62) = OffPtr <*byte> [3] v359
      • v114 (62) = Load <uint32> v366 v42
      • v98 (62) = Load <uint32> v392 v42
      • v390 (62) = Copy <uint32> v114
      • v416 (62) = Copy <uint32> v98
      • v417 (62) = Neq32 <bool> v390 v416
    • If v417b61 b60 (62)
    • b60: ← b59
      • v419 (+65) = Neq64 <bool> v789 v69
    • If v419b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v426 (+18) = OffPtr <unsafe.Pointer> [16] v794 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v428 (+46) = Add64 <uintptr> v173 v191 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (77) = OffPtr <*byte> [0] v23
      • v482 (+77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v437 (+72) = Lsh64x64 <uintptr> [false] v789 v601
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v452 (73) = OffPtr <*unsafe.Pointer> [0] v6
      • v453 (73) = Load <unsafe.Pointer> v452 v42
      • v741 (18) = Add64 <uintptr> v437 v441
      • v442 (18) = Add64 <uintptr> v69 v741
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v448 (73) = OffPtr <*unsafe.Pointer> [0] v443
      • v449 (73) = Load <unsafe.Pointer> v448 v42
      • v458 (73) = StaticCall <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v62 v42
      • v460 (73) = SelectN <bool> [0] v458
      • v459 (73) = SelectN <mem> [1] v458
      • v447 (+73) = NilCheck <void> v443 v42
    • If v460b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = NilCheck <void> v8 v459
      • v467 (74) = OffPtr <*uint8> [81] v8
      • v468 (74) = Load <uint8> v467 v459
      • v469 (74) = ZeroExt8to64 <uintptr> v468
      • v470 (74) = Mul64 <uintptr> v789 v469
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v734 (18) = Add64 <uintptr> v473 v470
      • v474 (18) = Add64 <uintptr> v734 v148
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v497 (80) = NilCheck <void> v8 v42
      • v493 (80) = OffPtr <*uint32> [12] v9
      • v494 (+80) = Load <uint32> v493 v42
      • v495 (80) = ZeroExt32to64 <uintptr> v494
      • v498 (+80) = OffPtr <*func(unsafe.Pointer, uintptr) uintptr> [72] v8
      • v499 (80) = Load <func(unsafe.Pointer, uintptr) uintptr> v498 v42
      • v501 (80) = Load <uintptr> v499 v42
      • v519 (82) = OffPtr <*unsafe.Pointer> [16] v9
      • v525 (82) = OffPtr <*uint16> [82] v8
      • v538 (83) = OffPtr <*unsafe.Pointer> [24] v9
      • v502 (80) = ClosureCall <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v6 v495 v42
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v503 (80) = SelectN <mem> [1] v502
      • v507 (+81) = Load <uint8> v50 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v511 (+187) = And8 <uint8> v510 v507
      • v512 (187) = Lsh64x8 <uintptr> [true] v173 v511 (~R0[uintptr])
      • v514 (+192) = Add64 <uintptr> v729 v512 (m[uintptr], ~R0[uintptr])
      • v520 (+82) = Load <unsafe.Pointer> v519 v503 (p[unsafe.Pointer])
      • v522 (82) = And64 <uintptr> v514 v504
      • v526 (82) = Load <uint16> v525 v503
      • v527 (82) = ZeroExt16to64 <uintptr> v526
      • v528 (82) = Mul64 <uintptr> v522 v527 (x[uintptr])
      • v529 (82) = InlMark <void> [5620] v503
      • v532 (+18) = AddPtr <unsafe.Pointer> v520 v528 (b[*bmap], ~R0[unsafe.Pointer])
      • v539 (+83) = Load <unsafe.Pointer> v538 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v540 (83) = IsNonNil <bool> v539
    • If v540b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v588 (+197) = Rsh64Ux64 <uintptr> [false] v504 v587
      • v589 (197) = Trunc64to8 <uint8> v588 (top[uint8])
      • v590 (+198) = Less8U <bool> v589 v579
    • If v590b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v546 (+1128) = Load <uint8> v32 v503
      • v548 (1128) = And8 <uint8> v547 v546
      • v549 (1128) = Neq8 <bool> v548 v36 (~R0[bool])
    • If v549b84 b80 (+84)
    • b80: ← b78
      • v553 (+86) = Rsh64Ux64 <uintptr> [false] v514 v552 (m[uintptr])
    • Plainb84 (86)
    • b84: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v553 (m[uintptr])
      • v557 (+88) = And64 <uintptr> v556 v504
      • v564 (88) = Mul64 <uintptr> v557 v527 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v568 (+18) = AddPtr <unsafe.Pointer> v539 v564 (b[*bmap], ~R0[unsafe.Pointer], b[*bmap], oldb[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v575 (205) = OffPtr <*uint8> [0] v568
      • v576 (+205) = Load <uint8> v575 v503 (h[uint8])
      • v492 (206) = Const8 <uint8> [3]
      • v454 (206) = Const8 <uint8> [-2]
      • v518 (206) = Add8 <uint8> v454 v576
      • v560 (+206) = Less8U <bool> v518 v492
    • If v560b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = Add8 <uint8> v589 v579 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v589 v592 (top[uint8], top[uint8], ~R0[uint8])
    • Plainb103 (+94)
    • b90: ← b103 b113
      • v595 (94) = Phi <*bmap> v756 v707 (b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap])
      • v753 (105) = Phi <mem> v503 v751
    • Plainb95 (94)
    • b93: ← b113 b103
      • v637 (94) = Phi <*bmap> v707 v756
      • v626 (105) = Phi <mem> v751 v503
      • v710 (105) = OffPtr <*byte> [0] v23
      • v712 (+105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v626
      • v602 (+218) = InlMark <void> [5633] v626
      • v605 (+18) = OffPtr <unsafe.Pointer> [8] v637 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v626 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v609 (+95) = Less64U <bool> v608 v69
    • If v609b97 b113 (likely) (95)
    • b97: ← b96
      • v614 (97) = OffPtr <*int> [8] v752
      • v615 (+97) = Load <int> v614 v751
      • v618 (97) = OffPtr <*int> [8] v6
      • v619 (97) = Load <int> v618 v751
      • v620 (97) = Neq64 <bool> v615 v619
    • If v620b105 b100 (97)
    • b100: ← b97
      • v624 (97) = OffPtr <*[8]uint8> [0] v637
      • v629 (97) = AddPtr <*uint8> v624 v608
      • v631 (97) = Load <uint8> v629 v751
      • v633 (97) = Neq8 <bool> v593 v631
    • If v633b105 b104 (97)
    • b101:
    • BlockInvalid (97)
    • b104: ← b100
      • v638 (100) = OffPtr <*unsafe.Pointer> [0] v752
      • v639 (+100) = Load <unsafe.Pointer> v638 v751
      • v642 (100) = OffPtr <*unsafe.Pointer> [0] v6
      • v643 (100) = Load <unsafe.Pointer> v642 v751
      • v644 (100) = EqPtr <bool> v639 v643
    • If v644b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v658 (100) = StaticCall <bool,mem> {AuxCall{runtime.memequal}} [24] v639 v643 v619 v751
      • v660 (100) = SelectN <bool> [0] v658
      • v659 (100) = SelectN <mem> [1] v658
    • If v660b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v668 (101) = OffPtr <*uint8> [81] v8
      • v669 (+101) = Load <uint8> v668 v704
      • v670 (101) = ZeroExt8to64 <uintptr> v669
      • v671 (101) = Mul64 <uintptr> v608 v670
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v637 v704
      • v691 (18) = Add64 <uintptr> v674 v671
      • v675 (18) = Add64 <uintptr> v691 v148
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v685 (+18) = OffPtr <unsafe.Pointer> [16] v752 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v687 (+95) = Add64 <uintptr> v608 v173 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v696 (+210) = Load <uint16> v525 v751
      • v697 (210) = ZeroExt16to64 <uintptr> v696
      • v699 (210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v637 v751
      • v689 (18) = Add64 <uintptr> v700 v697
      • v701 (18) = Add64 <uintptr> v690 v689
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = NilCheck <void> v702 v751
      • v707 (210) = Load <*bmap> v702 v751 (~R0[*bmap], b[*bmap])
      • v597 (+94) = IsNonNil <bool> v707
    • If v597b90 b93 (+94)
    • b103: ← b89
      • v95 (+94) = IsNonNil <bool> v756
    • If v95b90 b93 (likely)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v255
  • name ~R0[unsafe.Pointer]: v344
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v595 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name ~R0[unsafe.Pointer]: v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • lower [240083 ns]

    b1 b1 NE b2 b2 EQ b1->b2 0 b5 b5 Ret b1->b5 1 b2->b5 0 b4 b4 NE b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 EQ b4->b8 1 b7->b8 0 b10 b10 LT b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 NE b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 ULT b14->b15 0 b16 b16 NE b15->b16 0 b18 b18 Ret b15->b18 1 b28 b28 EQ b16->b28 0 b19 b19 ULE b16->b19 1 b19->b28 0 b24 b24 EQ b19->b24 1 b34 b34 Ret b24->b34 0 b30 b30 NE b24->b30 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 ULT b37->b38 0 b39 b39 NE b38->b39 0 b41 b41 NE b38->b41 1 b51 b51 EQ b39->b51 0 b42 b42 ULE b39->b42 1 b68 b68 NE b41->b68 0 b66 b66 Ret b41->b66 1 b42->b51 0 b47 b47 EQ b42->b47 1 b55 b55 Ret b47->b55 0 b53 b53 NE b47->b53 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 NE b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 NE b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 NE b75->b78 0 b76 b76 ULT b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b84 b84 ULT b78->b84 0 b80 b80 Plain b78->b80 1 b80->b84 0 b85 b85 Plain b84->b85 0 b86 b86 Plain b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b103 b103 NE b89->b103 0 b90 b90 Plain b95 b95 Plain b90->b95 0 b93 b93 Ret b96 b96 ULT b95->b96 0 b97 b97 NE b96->b97 0 b113 b113 NE b96->b113 1 b105 b105 Plain b97->b105 0 b100 b100 NE b97->b100 1 b100->b105 0 b104 b104 EQ b100->b104 1 b110 b110 Ret b104->b110 0 b106 b106 NE b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0 b113->b93 1 b103->b90 0 b103->b93 1
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v8 (13) = ArgIntReg <*abi.MapType> {t+0} [0] (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = ArgIntReg <*hmap> {h+0} [1] (h[*hmap], h[*hmap])
      • v69 (?) = MOVQconst <uintptr> [8] (x[uintptr], x[uintptr], keymaybe[uintptr], x[uintptr])
      • v75 (?) = MOVQconst <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v173 (?) = MOVQconst <uintptr> [1]
      • v661 (?) = LEAQ <*uint8> {go:string."concurrent map read and map write"} v3
      • v581 (?) = MOVQconst <int> [33]
      • v623 (13) = ArgIntReg <*uint8> {ky+0} [2]
      • v613 (13) = ArgIntReg <int> {ky+8} [3]
      • v505 (?) = SPanchored <uintptr> v2 v1
      • v580 (+18) = TESTQ <flags> v9 v9
      • v6 (?) = LEAQ <*string> {ky} v505 (~R0[*stringStruct], p[unsafe.Pointer], sp[*string], key[*stringStruct])
      • v617 (+13) = MOVQstore <mem> {ky} v505 v623 v1
      • v524 (+13) = MOVQstore <mem> {ky} [8] v505 v613 v617
    • NE v580b2 b5 (18)
    • b2: ← b1
      • v610 (18) = CMPQconstload <flags> [val=0,off=0] v9 v524
    • EQ v610b5 b4 (18)
    • b4: ← b2
      • v33 (+21) = MOVBload <uint8> [8] v9 v524
      • v684 (21) = TESTBconst <flags> [4] v33
    • NE v684b7 b8 (21)
    • b5: ← b2 b1
      • v25 (19) = LEAQ <*byte> {runtime.zeroVal} v3
      • v27 (+19) = MakeResult <unsafe.Pointer,mem> v25 v524
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = CALLstatic <mem> {AuxCall{runtime.fatal}} [16] v661 v581 v524
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v524 v41
      • v611 (+25) = CMPBconstload <flags> [val=0,off=9] v9 v42
    • EQ v611b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v57 (+27) = MOVQload <unsafe.Pointer> [16] v9 v42 (p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap])
      • v62 (+28) = MOVQload <int> {ky} [8] v505 v42
      • v112 (28) = CMPQconst <flags> [32] v62
    • LT v112b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v73 (+18) = ADDQconst <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v694 (+30) = CMPQconst <flags> [8] v77
    • ULT v694b16 b18 (likely) (30)
    • b16: ← b15
      • v88 (+32) = MOVQload <int> {ky} [8] v505 v810
      • v489 (+32) = CMPQload <flags> [8] v816 v88 v810
    • NE v489b28 b19 (32)
    • b18: ← b15 b27
      • v177 (42) = LEAQ <*byte> {runtime.zeroVal} v3
      • v179 (+42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b16
      • v92 (32) = LoweredNilCheck <void> v57 v810
      • v99 (32) = ADDQ <*uint8> v57 v77
      • v102 (32) = InlMark <void> [5608] v810
      • v488 (32) = CMPBconstload <flags> [val=1,off=0] v99 v810
    • ULE v488b28 b24 (+32)
    • b20:
    • BlockInvalid (32)
    • b24: ← b19
      • v123 (+38) = MOVQload <unsafe.Pointer> v816 v810
      • v127 (38) = MOVQload <unsafe.Pointer> {ky} v505 v810
      • v672 (38) = CMPQ <flags> v127 v123
    • EQ v672b34 b30 (38)
    • b25:
    • BlockInvalid (33)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b19 b16
      • v109 (+33) = LoweredNilCheck <void> v57 v810
      • v115 (33) = ADDQ <*uint8> v57 v77
      • v438 (33) = CMPBconstload <flags> [val=0,off=0] v115 v810
    • EQ v438b27 b26 (33)
    • b30: ← b24
      • v142 (38) = CALLstatic <bool,mem> {AuxCall{runtime.memequal}} [24] v123 v127 v88 v810
      • v144 (38) = SelectN <bool> [0] v142
      • v143 (38) = SelectN <mem> [1] v142
      • v396 (38) = TESTB <flags> v144 v144
    • NE v396b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v152 (+39) = LoweredNilCheck <void> v8 v703
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v711 (39) = MOVBload <uintptr> [81] v8 v703
      • v156 (39) = MULQ <uintptr> v77 v711
      • v160 (18) = LEAQ1 <uintptr> [136] v159 v156
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v171 (+18) = ADDQconst <unsafe.Pointer> [16] v816 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v174 (+30) = ADDQconst <uintptr> [1] v77 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v188 (+18) = ADDQconst <unsafe.Pointer> [8] v57 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (keymaybe[uintptr], i[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v377 (+46) = CMPQconst <flags> [8] v191
    • ULT v377b39 b41 (likely) (46)
    • b39: ← b38
      • v351 (+48) = CMPQload <flags> [8] v794 v62 v42
    • NE v351b51 b42 (48)
    • b41: ← b38 b50
      • v335 (+71) = CMPQconst <flags> [8] v789
    • NE v335b68 b66 (71)
    • b42: ← b39
      • v206 (48) = LoweredNilCheck <void> v57 v42
      • v212 (48) = ADDQ <*uint8> v57 v191
      • v215 (48) = InlMark <void> [5612] v42
      • v487 (48) = CMPBconstload <flags> [val=1,off=0] v212 v42
    • ULE v487b51 b47 (+48)
    • b43:
    • BlockInvalid (48)
    • b47: ← b42
      • v235 (+54) = MOVQload <unsafe.Pointer> v794 v42
      • v239 (54) = MOVQload <unsafe.Pointer> {ky} v505 v42
      • v604 (54) = CMPQ <flags> v239 v235
    • EQ v604b55 b53 (54)
    • b48:
    • BlockInvalid (49)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b42 b39
      • v221 (+49) = LoweredNilCheck <void> v57 v42
      • v227 (49) = ADDQ <*uint8> v57 v191
      • v436 (49) = CMPBconstload <flags> [val=0,off=0] v227 v42
    • EQ v436b50 b49 (49)
    • b53: ← b47
      • v270 (+58) = LoweredNilCheck <void> v239 v42
      • v303 (58) = LoweredNilCheck <void> v235 v42
      • v211 (58) = MOVLload <uint32> v235 v42
      • v82 (58) = CMPLload <flags> v239 v211 v42
    • NE v82b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = LoweredNilCheck <void> v8 v42
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v713 (55) = MOVBload <uintptr> [81] v8 v42
      • v250 (55) = MULQ <uintptr> v713 v191
      • v254 (18) = LEAQ1 <uintptr> [136] v250 v253
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v341 (+62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v239 v42
      • v343 (18) = LEAQ1 <uintptr> [-4] v342 v62
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v356 (+62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v235 v42
      • v358 (18) = LEAQ1 <uintptr> [-4] v357 v62
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = LoweredNilCheck <void> v344 v42
      • v391 (62) = LoweredNilCheck <void> v359 v42
      • v98 (62) = MOVLload <uint32> v359 v42
      • v562 (62) = CMPLload <flags> v344 v98 v42
    • NE v562b61 b60 (62)
    • b60: ← b59
      • v545 (+65) = CMPQconst <flags> [8] v789
    • NE v545b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v426 (+18) = ADDQconst <unsafe.Pointer> [16] v794 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v428 (+46) = ADDQconst <uintptr> [1] v191 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (77) = LEAQ <*byte> {runtime.zeroVal} v3
      • v482 (+77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v453 (73) = MOVQload <unsafe.Pointer> {ky} v505 v42
      • v456 (+72) = SHLQconst <uintptr> [4] v789
      • v442 (18) = LEAQ1 <uintptr> [8] v456 v441
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v449 (73) = MOVQload <unsafe.Pointer> v443 v42
      • v458 (73) = CALLstatic <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v62 v42
      • v460 (73) = SelectN <bool> [0] v458
      • v459 (73) = SelectN <mem> [1] v458
      • v506 (73) = TESTB <flags> v460 v460
      • v447 (+73) = LoweredNilCheck <void> v443 v42
    • NE v506b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = LoweredNilCheck <void> v8 v459
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v606 (74) = MOVBload <uintptr> [81] v8 v459
      • v470 (74) = MULQ <uintptr> v789 v606
      • v474 (18) = LEAQ1 <uintptr> [136] v473 v470
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v497 (80) = LoweredNilCheck <void> v8 v42
      • v499 (+80) = MOVQload <func(unsafe.Pointer, uintptr) uintptr> [72] v8 v42
      • v501 (80) = MOVQload <uintptr> v499 v42
      • v607 (+80) = MOVLload <uintptr> [12] v9 v42
      • v502 (80) = CALLclosure <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v6 v607 v42
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v503 (80) = SelectN <mem> [1] v502
      • v507 (+81) = MOVBload <uint8> [9] v9 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v512 (+187) = SHLQ <uintptr> v173 v507 (~R0[uintptr])
      • v514 (+192) = ADDQconst <uintptr> [-1] v512 (~R0[uintptr], m[uintptr])
      • v522 (+82) = ANDQ <uintptr> v514 v504
      • v529 (82) = InlMark <void> [5620] v503
      • v539 (+83) = MOVQload <unsafe.Pointer> [24] v9 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v349 (83) = TESTQ <flags> v539 v539
      • v720 (82) = MOVWload <uintptr> [82] v8 v503
      • v528 (82) = MULQ <uintptr> v522 v720 (x[uintptr])
      • v532 (+18) = ADDQload <unsafe.Pointer> [16] v528 v9 v503 (~R0[unsafe.Pointer], b[*bmap])
    • NE v349b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v337 (+197) = SHRQconst <uintptr> [56] v504
      • v333 (+198) = CMPBconst <flags> [5] v337
    • ULT v333b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v546 (+1128) = MOVBload <uint8> [8] v9 v503
      • v267 (1128) = TESTBconst <flags> [8] v546
    • NE v267b84 b80 (+84)
    • b80: ← b78
      • v263 (+86) = SHRQconst <uintptr> [1] v514
    • Plainb84 (+86)
    • b84: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v263 (m[uintptr])
      • v557 (+88) = ANDQ <uintptr> v556 v504
      • v564 (88) = MULQ <uintptr> v557 v720 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v568 (+18) = ADDQ <unsafe.Pointer> v539 v564 (~R0[unsafe.Pointer], b[*bmap], b[*bmap], oldb[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v575 (205) = ADDQ <*uint8> v539 v564
      • v576 (+205) = MOVBload <uint8> v575 v503 (h[uint8])
      • v518 (+206) = ADDLconst <uint8> [-2] v576
      • v140 (+206) = CMPBconst <flags> [3] v518
    • ULT v140b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = ADDLconst <uint8> [5] v337 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v337 v592 (top[uint8], ~R0[uint8], top[uint8])
    • Plainb103 (+94)
    • b90: ← b103 b113
      • v753 (105) = Phi <mem> v503 v751
    • Plainb95 (94)
    • b93: ← b113 b103
      • v637 (94) = Phi <*bmap> v707 v756
      • v626 (105) = Phi <mem> v751 v503
      • v710 (105) = LEAQ <*byte> {runtime.zeroVal} v3
      • v712 (+105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v626
      • v602 (+218) = InlMark <void> [5633] v626
      • v605 (+18) = ADDQconst <unsafe.Pointer> [8] v637 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v626 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v137 (+95) = CMPQconst <flags> [8] v608
    • ULT v137b97 b113 (likely) (95)
    • b97: ← b96
      • v619 (+97) = MOVQload <int> {ky} [8] v505 v751
      • v471 (+97) = CMPQload <flags> [8] v752 v619 v751
    • NE v471b105 b100 (97)
    • b100: ← b97
      • v629 (97) = ADDQ <*uint8> v637 v608
      • v567 (97) = CMPBload <flags> v629 v593 v751
    • NE v567b105 b104 (97)
    • b101:
    • BlockInvalid (97)
    • b104: ← b100
      • v639 (+100) = MOVQload <unsafe.Pointer> v752 v751
      • v643 (100) = MOVQload <unsafe.Pointer> {ky} v505 v751
      • v566 (100) = CMPQ <flags> v643 v639
    • EQ v566b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v658 (100) = CALLstatic <bool,mem> {AuxCall{runtime.memequal}} [24] v639 v643 v619 v751
      • v660 (100) = SelectN <bool> [0] v658
      • v659 (100) = SelectN <mem> [1] v658
      • v176 (100) = TESTB <flags> v660 v660
    • NE v176b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v637 v704
      • v531 (+101) = MOVBload <uintptr> [81] v8 v704
      • v671 (+101) = MULQ <uintptr> v608 v531
      • v675 (18) = LEAQ1 <uintptr> [136] v674 v671
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v685 (+18) = ADDQconst <unsafe.Pointer> [16] v752 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v687 (+95) = ADDQconst <uintptr> [1] v608 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v699 (+210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v637 v751
      • v530 (+210) = MOVWload <uintptr> [82] v8 v751
      • v701 (18) = LEAQ1 <uintptr> [-8] v700 v530
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = LoweredNilCheck <void> v702 v751
      • v707 (210) = MOVQload <*bmap> v702 v751 (b[*bmap], ~R0[*bmap])
      • v630 (+94) = TESTQ <flags> v707 v707
    • NE v630b90 b93 (+94)
    • b103: ← b89
      • v698 (+94) = TESTQ <flags> v756 v756
    • NE v698b90 b93 (likely)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v255
  • name ~R0[unsafe.Pointer]: v344
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v595 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name ~R0[unsafe.Pointer]: v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • addressing modes [17933 ns]

    b1 b1 NE b2 b2 EQ b1->b2 0 b5 b5 Ret b1->b5 1 b2->b5 0 b4 b4 NE b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 EQ b4->b8 1 b7->b8 0 b10 b10 LT b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 NE b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 ULT b14->b15 0 b16 b16 NE b15->b16 0 b18 b18 Ret b15->b18 1 b28 b28 EQ b16->b28 0 b19 b19 ULE b16->b19 1 b19->b28 0 b24 b24 EQ b19->b24 1 b34 b34 Ret b24->b34 0 b30 b30 NE b24->b30 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 ULT b37->b38 0 b39 b39 NE b38->b39 0 b41 b41 NE b38->b41 1 b51 b51 EQ b39->b51 0 b42 b42 ULE b39->b42 1 b68 b68 NE b41->b68 0 b66 b66 Ret b41->b66 1 b42->b51 0 b47 b47 EQ b42->b47 1 b55 b55 Ret b47->b55 0 b53 b53 NE b47->b53 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 NE b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 NE b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 NE b75->b78 0 b76 b76 ULT b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b84 b84 ULT b78->b84 0 b80 b80 Plain b78->b80 1 b80->b84 0 b85 b85 Plain b84->b85 0 b86 b86 Plain b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b103 b103 NE b89->b103 0 b90 b90 Plain b95 b95 Plain b90->b95 0 b93 b93 Ret b96 b96 ULT b95->b96 0 b97 b97 NE b96->b97 0 b113 b113 NE b96->b113 1 b105 b105 Plain b97->b105 0 b100 b100 NE b97->b100 1 b100->b105 0 b104 b104 EQ b100->b104 1 b110 b110 Ret b104->b110 0 b106 b106 NE b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0 b113->b93 1 b103->b90 0 b103->b93 1
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v8 (13) = ArgIntReg <*abi.MapType> {t+0} [0] (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = ArgIntReg <*hmap> {h+0} [1] (h[*hmap], h[*hmap])
      • v69 (?) = MOVQconst <uintptr> [8] (x[uintptr], keymaybe[uintptr], x[uintptr], x[uintptr])
      • v75 (?) = MOVQconst <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v173 (?) = MOVQconst <uintptr> [1]
      • v661 (?) = LEAQ <*uint8> {go:string."concurrent map read and map write"} v3
      • v581 (?) = MOVQconst <int> [33]
      • v623 (13) = ArgIntReg <*uint8> {ky+0} [2]
      • v613 (13) = ArgIntReg <int> {ky+8} [3]
      • v505 (?) = SPanchored <uintptr> v2 v1
      • v580 (+18) = TESTQ <flags> v9 v9
      • v6 (?) = LEAQ <*string> {ky} v505 (~R0[*stringStruct], p[unsafe.Pointer], key[*stringStruct], sp[*string])
      • v617 (+13) = MOVQstore <mem> {ky} v505 v623 v1
      • v524 (+13) = MOVQstore <mem> {ky} [8] v505 v613 v617
    • NE v580b2 b5 (18)
    • b2: ← b1
      • v610 (18) = CMPQconstload <flags> [val=0,off=0] v9 v524
    • EQ v610b5 b4 (18)
    • b4: ← b2
      • v33 (+21) = MOVBload <uint8> [8] v9 v524
      • v684 (21) = TESTBconst <flags> [4] v33
    • NE v684b7 b8 (21)
    • b5: ← b2 b1
      • v25 (19) = LEAQ <*byte> {runtime.zeroVal} v3
      • v27 (+19) = MakeResult <unsafe.Pointer,mem> v25 v524
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = CALLstatic <mem> {AuxCall{runtime.fatal}} [16] v661 v581 v524
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v524 v41
      • v611 (+25) = CMPBconstload <flags> [val=0,off=9] v9 v42
    • EQ v611b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v57 (+27) = MOVQload <unsafe.Pointer> [16] v9 v42 (p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer])
      • v62 (+28) = MOVQload <int> {ky} [8] v505 v42
      • v112 (28) = CMPQconst <flags> [32] v62
    • LT v112b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v73 (+18) = ADDQconst <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v694 (+30) = CMPQconst <flags> [8] v77
    • ULT v694b16 b18 (likely) (30)
    • b16: ← b15
      • v88 (+32) = MOVQload <int> {ky} [8] v505 v810
      • v489 (+32) = CMPQload <flags> [8] v816 v88 v810
    • NE v489b28 b19 (32)
    • b18: ← b15 b27
      • v177 (42) = LEAQ <*byte> {runtime.zeroVal} v3
      • v179 (+42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b16
      • v92 (32) = LoweredNilCheck <void> v57 v810
      • v99 (32) = ADDQ <*uint8> v57 v77
      • v102 (32) = InlMark <void> [5608] v810
      • v634 (32) = MOVBloadidx1 <uint8> v57 v77 v810
      • v488 (32) = CMPBconst <flags> [1] v634
    • ULE v488b28 b24 (+32)
    • b20:
    • BlockInvalid (32)
    • b24: ← b19
      • v123 (+38) = MOVQload <unsafe.Pointer> v816 v810
      • v127 (38) = MOVQload <unsafe.Pointer> {ky} v505 v810
      • v672 (38) = CMPQ <flags> v127 v123
    • EQ v672b34 b30 (38)
    • b25:
    • BlockInvalid (33)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b19 b16
      • v109 (+33) = LoweredNilCheck <void> v57 v810
      • v115 (33) = ADDQ <*uint8> v57 v77
      • v95 (33) = MOVBloadidx1 <uint8> v57 v77 v810
      • v438 (33) = TESTB <flags> v95 v95
    • EQ v438b27 b26 (33)
    • b30: ← b24
      • v142 (38) = CALLstatic <bool,mem> {AuxCall{runtime.memequal}} [24] v123 v127 v88 v810
      • v144 (38) = SelectN <bool> [0] v142
      • v143 (38) = SelectN <mem> [1] v142
      • v396 (38) = TESTB <flags> v144 v144
    • NE v396b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v152 (+39) = LoweredNilCheck <void> v8 v703
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v711 (39) = MOVBload <uintptr> [81] v8 v703
      • v156 (39) = MULQ <uintptr> v77 v711
      • v160 (18) = LEAQ1 <uintptr> [136] v159 v156
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v171 (+18) = ADDQconst <unsafe.Pointer> [16] v816 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v174 (+30) = ADDQconst <uintptr> [1] v77 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v188 (+18) = ADDQconst <unsafe.Pointer> [8] v57 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (keymaybe[uintptr], i[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v377 (+46) = CMPQconst <flags> [8] v191
    • ULT v377b39 b41 (likely) (46)
    • b39: ← b38
      • v351 (+48) = CMPQload <flags> [8] v794 v62 v42
    • NE v351b51 b42 (48)
    • b41: ← b38 b50
      • v335 (+71) = CMPQconst <flags> [8] v789
    • NE v335b68 b66 (71)
    • b42: ← b39
      • v206 (48) = LoweredNilCheck <void> v57 v42
      • v212 (48) = ADDQ <*uint8> v57 v191
      • v215 (48) = InlMark <void> [5612] v42
      • v486 (48) = MOVBloadidx1 <uint8> v57 v191 v42
      • v487 (48) = CMPBconst <flags> [1] v486
    • ULE v487b51 b47 (+48)
    • b43:
    • BlockInvalid (48)
    • b47: ← b42
      • v235 (+54) = MOVQload <unsafe.Pointer> v794 v42
      • v239 (54) = MOVQload <unsafe.Pointer> {ky} v505 v42
      • v604 (54) = CMPQ <flags> v239 v235
    • EQ v604b55 b53 (54)
    • b48:
    • BlockInvalid (49)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b42 b39
      • v221 (+49) = LoweredNilCheck <void> v57 v42
      • v227 (49) = ADDQ <*uint8> v57 v191
      • v597 (49) = MOVBloadidx1 <uint8> v57 v191 v42
      • v436 (49) = TESTB <flags> v597 v597
    • EQ v436b50 b49 (49)
    • b53: ← b47
      • v270 (+58) = LoweredNilCheck <void> v239 v42
      • v303 (58) = LoweredNilCheck <void> v235 v42
      • v211 (58) = MOVLload <uint32> v235 v42
      • v82 (58) = CMPLload <flags> v239 v211 v42
    • NE v82b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = LoweredNilCheck <void> v8 v42
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v713 (55) = MOVBload <uintptr> [81] v8 v42
      • v250 (55) = MULQ <uintptr> v713 v191
      • v254 (18) = LEAQ1 <uintptr> [136] v250 v253
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v341 (+62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v239 v42
      • v343 (18) = LEAQ1 <uintptr> [-4] v342 v62
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v356 (+62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v235 v42
      • v358 (18) = LEAQ1 <uintptr> [-4] v357 v62
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = LoweredNilCheck <void> v344 v42
      • v391 (62) = LoweredNilCheck <void> v359 v42
      • v98 (62) = MOVLload <uint32> v359 v42
      • v562 (62) = CMPLload <flags> v344 v98 v42
    • NE v562b61 b60 (62)
    • b60: ← b59
      • v545 (+65) = CMPQconst <flags> [8] v789
    • NE v545b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v426 (+18) = ADDQconst <unsafe.Pointer> [16] v794 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v428 (+46) = ADDQconst <uintptr> [1] v191 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (77) = LEAQ <*byte> {runtime.zeroVal} v3
      • v482 (+77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v453 (73) = MOVQload <unsafe.Pointer> {ky} v505 v42
      • v456 (+72) = SHLQconst <uintptr> [4] v789
      • v442 (18) = LEAQ1 <uintptr> [8] v456 v441
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v449 (73) = MOVQload <unsafe.Pointer> v443 v42
      • v458 (73) = CALLstatic <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v62 v42
      • v460 (73) = SelectN <bool> [0] v458
      • v459 (73) = SelectN <mem> [1] v458
      • v506 (73) = TESTB <flags> v460 v460
      • v447 (+73) = LoweredNilCheck <void> v443 v42
    • NE v506b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = LoweredNilCheck <void> v8 v459
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v606 (74) = MOVBload <uintptr> [81] v8 v459
      • v470 (74) = MULQ <uintptr> v789 v606
      • v474 (18) = LEAQ1 <uintptr> [136] v473 v470
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v497 (80) = LoweredNilCheck <void> v8 v42
      • v499 (+80) = MOVQload <func(unsafe.Pointer, uintptr) uintptr> [72] v8 v42
      • v501 (80) = MOVQload <uintptr> v499 v42
      • v607 (+80) = MOVLload <uintptr> [12] v9 v42
      • v502 (80) = CALLclosure <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v6 v607 v42
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v503 (80) = SelectN <mem> [1] v502
      • v507 (+81) = MOVBload <uint8> [9] v9 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v512 (+187) = SHLQ <uintptr> v173 v507 (~R0[uintptr])
      • v514 (+192) = ADDQconst <uintptr> [-1] v512 (m[uintptr], ~R0[uintptr])
      • v522 (+82) = ANDQ <uintptr> v514 v504
      • v529 (82) = InlMark <void> [5620] v503
      • v539 (+83) = MOVQload <unsafe.Pointer> [24] v9 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v349 (83) = TESTQ <flags> v539 v539
      • v720 (82) = MOVWload <uintptr> [82] v8 v503
      • v528 (82) = MULQ <uintptr> v522 v720 (x[uintptr])
      • v532 (+18) = ADDQload <unsafe.Pointer> [16] v528 v9 v503 (b[*bmap], ~R0[unsafe.Pointer])
    • NE v349b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v337 (+197) = SHRQconst <uintptr> [56] v504
      • v333 (+198) = CMPBconst <flags> [5] v337
    • ULT v333b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v546 (+1128) = MOVBload <uint8> [8] v9 v503
      • v267 (1128) = TESTBconst <flags> [8] v546
    • NE v267b84 b80 (+84)
    • b80: ← b78
      • v263 (+86) = SHRQconst <uintptr> [1] v514
    • Plainb84 (+86)
    • b84: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v263 (m[uintptr])
      • v557 (+88) = ANDQ <uintptr> v556 v504
      • v564 (88) = MULQ <uintptr> v557 v720 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v568 (+18) = ADDQ <unsafe.Pointer> v539 v564 (b[*bmap], ~R0[unsafe.Pointer], b[*bmap], oldb[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v575 (205) = ADDQ <*uint8> v539 v564
      • v576 (+205) = MOVBloadidx1 <uint8> v539 v564 v503 (h[uint8])
      • v518 (+206) = ADDLconst <uint8> [-2] v576
      • v140 (+206) = CMPBconst <flags> [3] v518
    • ULT v140b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = ADDLconst <uint8> [5] v337 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v337 v592 (top[uint8], top[uint8], ~R0[uint8])
    • Plainb103 (+94)
    • b90: ← b103 b113
      • v753 (105) = Phi <mem> v503 v751
    • Plainb95 (94)
    • b93: ← b113 b103
      • v637 (94) = Phi <*bmap> v707 v756
      • v626 (105) = Phi <mem> v751 v503
      • v710 (105) = LEAQ <*byte> {runtime.zeroVal} v3
      • v712 (+105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v626
      • v602 (+218) = InlMark <void> [5633] v626
      • v605 (+18) = ADDQconst <unsafe.Pointer> [8] v637 (~R0[unsafe.Pointer], kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v626 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v137 (+95) = CMPQconst <flags> [8] v608
    • ULT v137b97 b113 (likely) (95)
    • b97: ← b96
      • v619 (+97) = MOVQload <int> {ky} [8] v505 v751
      • v471 (+97) = CMPQload <flags> [8] v752 v619 v751
    • NE v471b105 b100 (97)
    • b100: ← b97
      • v629 (97) = ADDQ <*uint8> v637 v608
      • v689 (97) = MOVBloadidx1 <uint8> v637 v608 v751
      • v567 (97) = CMPB <flags> v689 v593
    • NE v567b105 b104 (97)
    • b101:
    • BlockInvalid (97)
    • b104: ← b100
      • v639 (+100) = MOVQload <unsafe.Pointer> v752 v751
      • v643 (100) = MOVQload <unsafe.Pointer> {ky} v505 v751
      • v566 (100) = CMPQ <flags> v643 v639
    • EQ v566b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v658 (100) = CALLstatic <bool,mem> {AuxCall{runtime.memequal}} [24] v639 v643 v619 v751
      • v660 (100) = SelectN <bool> [0] v658
      • v659 (100) = SelectN <mem> [1] v658
      • v176 (100) = TESTB <flags> v660 v660
    • NE v176b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v637 v704
      • v531 (+101) = MOVBload <uintptr> [81] v8 v704
      • v671 (+101) = MULQ <uintptr> v608 v531
      • v675 (18) = LEAQ1 <uintptr> [136] v674 v671
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v685 (+18) = ADDQconst <unsafe.Pointer> [16] v752 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v687 (+95) = ADDQconst <uintptr> [1] v608 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v699 (+210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v637 v751
      • v530 (+210) = MOVWload <uintptr> [82] v8 v751
      • v701 (18) = LEAQ1 <uintptr> [-8] v700 v530
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = LoweredNilCheck <void> v702 v751
      • v707 (210) = MOVQload <*bmap> v702 v751 (b[*bmap], ~R0[*bmap])
      • v630 (+94) = TESTQ <flags> v707 v707
    • NE v630b90 b93 (+94)
    • b103: ← b89
      • v698 (+94) = TESTQ <flags> v756 v756
    • NE v698b90 b93 (likely)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v255
  • name ~R0[unsafe.Pointer]: v344
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v595 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name ~R0[unsafe.Pointer]: v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • late lower [40388 ns]

    b1 b1 NE b2 b2 EQ b1->b2 0 b5 b5 Ret b1->b5 1 b2->b5 0 b4 b4 NE b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 EQ b4->b8 1 b7->b8 0 b10 b10 LT b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 NE b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 ULT b14->b15 0 b16 b16 NE b15->b16 0 b18 b18 Ret b15->b18 1 b28 b28 EQ b16->b28 0 b19 b19 ULE b16->b19 1 b19->b28 0 b24 b24 EQ b19->b24 1 b34 b34 Ret b24->b34 0 b30 b30 NE b24->b30 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 ULT b37->b38 0 b39 b39 NE b38->b39 0 b41 b41 NE b38->b41 1 b51 b51 EQ b39->b51 0 b42 b42 ULE b39->b42 1 b68 b68 NE b41->b68 0 b66 b66 Ret b41->b66 1 b42->b51 0 b47 b47 EQ b42->b47 1 b55 b55 Ret b47->b55 0 b53 b53 NE b47->b53 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 NE b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 NE b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 NE b75->b78 0 b76 b76 ULT b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b84 b84 ULT b78->b84 0 b80 b80 Plain b78->b80 1 b80->b84 0 b85 b85 Plain b84->b85 0 b86 b86 Plain b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b103 b103 NE b89->b103 0 b90 b90 Plain b95 b95 Plain b90->b95 0 b93 b93 Ret b96 b96 ULT b95->b96 0 b97 b97 NE b96->b97 0 b113 b113 NE b96->b113 1 b105 b105 Plain b97->b105 0 b100 b100 NE b97->b100 1 b100->b105 0 b104 b104 EQ b100->b104 1 b110 b110 Ret b104->b110 0 b106 b106 NE b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0 b113->b93 1 b103->b90 0 b103->b93 1
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v8 (13) = ArgIntReg <*abi.MapType> {t+0} [0] (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = ArgIntReg <*hmap> {h+0} [1] (h[*hmap], h[*hmap])
      • v69 (?) = MOVQconst <uintptr> [8] (x[uintptr], keymaybe[uintptr], x[uintptr], x[uintptr])
      • v75 (?) = MOVQconst <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v173 (?) = MOVQconst <uintptr> [1]
      • v661 (?) = LEAQ <*uint8> {go:string."concurrent map read and map write"} v3
      • v581 (?) = MOVQconst <int> [33]
      • v623 (13) = ArgIntReg <*uint8> {ky+0} [2]
      • v613 (13) = ArgIntReg <int> {ky+8} [3]
      • v505 (?) = SPanchored <uintptr> v2 v1
      • v580 (+18) = TESTQ <flags> v9 v9
      • v6 (?) = LEAQ <*string> {ky} v505 (~R0[*stringStruct], p[unsafe.Pointer], sp[*string], key[*stringStruct])
      • v617 (+13) = MOVQstore <mem> {ky} v505 v623 v1
      • v524 (+13) = MOVQstore <mem> {ky} [8] v505 v613 v617
    • NE v580b2 b5 (18)
    • b2: ← b1
      • v610 (18) = CMPQconstload <flags> [val=0,off=0] v9 v524
    • EQ v610b5 b4 (18)
    • b4: ← b2
      • v33 (+21) = MOVBload <uint8> [8] v9 v524
      • v684 (21) = TESTBconst <flags> [4] v33
    • NE v684b7 b8 (21)
    • b5: ← b2 b1
      • v25 (19) = LEAQ <*byte> {runtime.zeroVal} v3
      • v27 (+19) = MakeResult <unsafe.Pointer,mem> v25 v524
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = CALLstatic <mem> {AuxCall{runtime.fatal}} [16] v661 v581 v524
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v524 v41
      • v611 (+25) = CMPBconstload <flags> [val=0,off=9] v9 v42
    • EQ v611b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v57 (+27) = MOVQload <unsafe.Pointer> [16] v9 v42 (p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer])
      • v62 (+28) = MOVQload <int> {ky} [8] v505 v42
      • v112 (28) = CMPQconst <flags> [32] v62
    • LT v112b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v73 (+18) = ADDQconst <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v694 (+30) = CMPQconst <flags> [8] v77
    • ULT v694b16 b18 (likely) (30)
    • b16: ← b15
      • v88 (+32) = MOVQload <int> {ky} [8] v505 v810
      • v489 (+32) = CMPQload <flags> [8] v816 v88 v810
    • NE v489b28 b19 (32)
    • b18: ← b15 b27
      • v177 (42) = LEAQ <*byte> {runtime.zeroVal} v3
      • v179 (+42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b16
      • v92 (32) = LoweredNilCheck <void> v57 v810
      • v102 (32) = InlMark <void> [5608] v810
      • v634 (32) = MOVBloadidx1 <uint8> v57 v77 v810
      • v488 (32) = CMPBconst <flags> [1] v634
    • ULE v488b28 b24 (+32)
    • b20:
    • BlockInvalid (32)
    • b24: ← b19
      • v123 (+38) = MOVQload <unsafe.Pointer> v816 v810
      • v127 (38) = MOVQload <unsafe.Pointer> {ky} v505 v810
      • v672 (38) = CMPQ <flags> v127 v123
    • EQ v672b34 b30 (38)
    • b25:
    • BlockInvalid (33)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b19 b16
      • v109 (+33) = LoweredNilCheck <void> v57 v810
      • v95 (33) = MOVBloadidx1 <uint8> v57 v77 v810
      • v438 (33) = TESTB <flags> v95 v95
    • EQ v438b27 b26 (33)
    • b30: ← b24
      • v142 (38) = CALLstatic <bool,mem> {AuxCall{runtime.memequal}} [24] v123 v127 v88 v810
      • v144 (38) = SelectN <bool> [0] v142
      • v143 (38) = SelectN <mem> [1] v142
      • v396 (38) = TESTB <flags> v144 v144
    • NE v396b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v152 (+39) = LoweredNilCheck <void> v8 v703
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v711 (39) = MOVBload <uintptr> [81] v8 v703
      • v156 (39) = MULQ <uintptr> v77 v711
      • v160 (18) = LEAQ1 <uintptr> [136] v159 v156
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v171 (+18) = ADDQconst <unsafe.Pointer> [16] v816 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v174 (+30) = ADDQconst <uintptr> [1] v77 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v188 (+18) = ADDQconst <unsafe.Pointer> [8] v57 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (keymaybe[uintptr], i[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v377 (+46) = CMPQconst <flags> [8] v191
    • ULT v377b39 b41 (likely) (46)
    • b39: ← b38
      • v351 (+48) = CMPQload <flags> [8] v794 v62 v42
    • NE v351b51 b42 (48)
    • b41: ← b38 b50
      • v335 (+71) = CMPQconst <flags> [8] v789
    • NE v335b68 b66 (71)
    • b42: ← b39
      • v206 (48) = LoweredNilCheck <void> v57 v42
      • v215 (48) = InlMark <void> [5612] v42
      • v486 (48) = MOVBloadidx1 <uint8> v57 v191 v42
      • v487 (48) = CMPBconst <flags> [1] v486
    • ULE v487b51 b47 (+48)
    • b43:
    • BlockInvalid (48)
    • b47: ← b42
      • v235 (+54) = MOVQload <unsafe.Pointer> v794 v42
      • v239 (54) = MOVQload <unsafe.Pointer> {ky} v505 v42
      • v604 (54) = CMPQ <flags> v239 v235
    • EQ v604b55 b53 (54)
    • b48:
    • BlockInvalid (49)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b42 b39
      • v221 (+49) = LoweredNilCheck <void> v57 v42
      • v597 (49) = MOVBloadidx1 <uint8> v57 v191 v42
      • v436 (49) = TESTB <flags> v597 v597
    • EQ v436b50 b49 (49)
    • b53: ← b47
      • v270 (+58) = LoweredNilCheck <void> v239 v42
      • v303 (58) = LoweredNilCheck <void> v235 v42
      • v211 (58) = MOVLload <uint32> v235 v42
      • v82 (58) = CMPLload <flags> v239 v211 v42
    • NE v82b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = LoweredNilCheck <void> v8 v42
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v713 (55) = MOVBload <uintptr> [81] v8 v42
      • v250 (55) = MULQ <uintptr> v713 v191
      • v254 (18) = LEAQ1 <uintptr> [136] v250 v253
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v341 (+62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v239 v42
      • v343 (18) = LEAQ1 <uintptr> [-4] v342 v62
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v356 (+62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v235 v42
      • v358 (18) = LEAQ1 <uintptr> [-4] v357 v62
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = LoweredNilCheck <void> v344 v42
      • v391 (62) = LoweredNilCheck <void> v359 v42
      • v98 (62) = MOVLload <uint32> v359 v42
      • v562 (62) = CMPLload <flags> v344 v98 v42
    • NE v562b61 b60 (62)
    • b60: ← b59
      • v545 (+65) = CMPQconst <flags> [8] v789
    • NE v545b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v426 (+18) = ADDQconst <unsafe.Pointer> [16] v794 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v428 (+46) = ADDQconst <uintptr> [1] v191 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (77) = LEAQ <*byte> {runtime.zeroVal} v3
      • v482 (+77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v453 (73) = MOVQload <unsafe.Pointer> {ky} v505 v42
      • v456 (+72) = SHLQconst <uintptr> [4] v789
      • v442 (18) = LEAQ1 <uintptr> [8] v456 v441
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v449 (73) = MOVQload <unsafe.Pointer> v443 v42
      • v458 (73) = CALLstatic <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v62 v42
      • v460 (73) = SelectN <bool> [0] v458
      • v459 (73) = SelectN <mem> [1] v458
      • v506 (73) = TESTB <flags> v460 v460
      • v447 (+73) = LoweredNilCheck <void> v443 v42
    • NE v506b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = LoweredNilCheck <void> v8 v459
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v606 (74) = MOVBload <uintptr> [81] v8 v459
      • v470 (74) = MULQ <uintptr> v789 v606
      • v474 (18) = LEAQ1 <uintptr> [136] v473 v470
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v497 (80) = LoweredNilCheck <void> v8 v42
      • v499 (+80) = MOVQload <func(unsafe.Pointer, uintptr) uintptr> [72] v8 v42
      • v501 (80) = MOVQload <uintptr> v499 v42
      • v607 (+80) = MOVLload <uintptr> [12] v9 v42
      • v502 (80) = CALLclosure <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v6 v607 v42
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v503 (80) = SelectN <mem> [1] v502
      • v507 (+81) = MOVBload <uint8> [9] v9 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v512 (+187) = SHLQ <uintptr> v173 v507 (~R0[uintptr])
      • v514 (+192) = ADDQconst <uintptr> [-1] v512 (~R0[uintptr], m[uintptr])
      • v522 (+82) = ANDQ <uintptr> v514 v504
      • v529 (82) = InlMark <void> [5620] v503
      • v539 (+83) = MOVQload <unsafe.Pointer> [24] v9 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v349 (83) = TESTQ <flags> v539 v539
      • v720 (82) = MOVWload <uintptr> [82] v8 v503
      • v528 (82) = MULQ <uintptr> v522 v720 (x[uintptr])
      • v532 (+18) = ADDQload <unsafe.Pointer> [16] v528 v9 v503 (~R0[unsafe.Pointer], b[*bmap])
    • NE v349b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v337 (+197) = SHRQconst <uintptr> [56] v504
      • v333 (+198) = CMPBconst <flags> [5] v337
    • ULT v333b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v546 (+1128) = MOVBload <uint8> [8] v9 v503
      • v267 (1128) = TESTBconst <flags> [8] v546
    • NE v267b84 b80 (+84)
    • b80: ← b78
      • v263 (+86) = SHRQconst <uintptr> [1] v514
    • Plainb84 (+86)
    • b84: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v263 (m[uintptr])
      • v557 (+88) = ANDQ <uintptr> v556 v504
      • v564 (88) = MULQ <uintptr> v557 v720 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v568 (+18) = ADDQ <unsafe.Pointer> v539 v564 (b[*bmap], ~R0[unsafe.Pointer], b[*bmap], oldb[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v576 (+205) = MOVBloadidx1 <uint8> v539 v564 v503 (h[uint8])
      • v518 (+206) = ADDLconst <uint8> [-2] v576
      • v140 (+206) = CMPBconst <flags> [3] v518
    • ULT v140b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = ADDLconst <uint8> [5] v337 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v337 v592 (top[uint8], top[uint8], ~R0[uint8])
    • Plainb103 (+94)
    • b90: ← b103 b113
      • v753 (105) = Phi <mem> v503 v751
    • Plainb95 (94)
    • b93: ← b113 b103
      • v637 (94) = Phi <*bmap> v707 v756
      • v626 (105) = Phi <mem> v751 v503
      • v710 (105) = LEAQ <*byte> {runtime.zeroVal} v3
      • v712 (+105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v626
      • v602 (+218) = InlMark <void> [5633] v626
      • v605 (+18) = ADDQconst <unsafe.Pointer> [8] v637 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v626 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v137 (+95) = CMPQconst <flags> [8] v608
    • ULT v137b97 b113 (likely) (95)
    • b97: ← b96
      • v619 (+97) = MOVQload <int> {ky} [8] v505 v751
      • v471 (+97) = CMPQload <flags> [8] v752 v619 v751
    • NE v471b105 b100 (97)
    • b100: ← b97
      • v689 (97) = MOVBloadidx1 <uint8> v637 v608 v751
      • v567 (97) = CMPB <flags> v689 v593
    • NE v567b105 b104 (97)
    • b101:
    • BlockInvalid (97)
    • b104: ← b100
      • v639 (+100) = MOVQload <unsafe.Pointer> v752 v751
      • v643 (100) = MOVQload <unsafe.Pointer> {ky} v505 v751
      • v566 (100) = CMPQ <flags> v643 v639
    • EQ v566b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v658 (100) = CALLstatic <bool,mem> {AuxCall{runtime.memequal}} [24] v639 v643 v619 v751
      • v660 (100) = SelectN <bool> [0] v658
      • v659 (100) = SelectN <mem> [1] v658
      • v176 (100) = TESTB <flags> v660 v660
    • NE v176b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v637 v704
      • v531 (+101) = MOVBload <uintptr> [81] v8 v704
      • v671 (+101) = MULQ <uintptr> v608 v531
      • v675 (18) = LEAQ1 <uintptr> [136] v674 v671
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v685 (+18) = ADDQconst <unsafe.Pointer> [16] v752 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v687 (+95) = ADDQconst <uintptr> [1] v608 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v699 (+210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v637 v751
      • v530 (+210) = MOVWload <uintptr> [82] v8 v751
      • v701 (18) = LEAQ1 <uintptr> [-8] v700 v530
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = LoweredNilCheck <void> v702 v751
      • v707 (210) = MOVQload <*bmap> v702 v751 (~R0[*bmap], b[*bmap])
      • v630 (+94) = TESTQ <flags> v707 v707
    • NE v630b90 b93 (+94)
    • b103: ← b89
      • v698 (+94) = TESTQ <flags> v756 v756
    • NE v698b90 b93 (likely)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name x[uint8]: v101
  • name ~R0[bool]: v104
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name x[uint8]: v214
  • name ~R0[bool]: v216
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v255
  • name ~R0[unsafe.Pointer]: v344
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v553 v556
  • name p[unsafe.Pointer]: v520
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v595 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name ~R0[bool]: v549
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name hash[uintptr]: v504
  • name top[uint8]: v589 v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name b[*bmap]: v595
  • name p[unsafe.Pointer]: v595
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name ~R0[unsafe.Pointer]: v685
  • name b[*bmap]: v595
  • name t[*abi.MapType]: v8
  • name p[unsafe.Pointer]: v595
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • lowered deadcode for cse [70418 ns]

    b1 b1 NE b2 b2 EQ b1->b2 0 b5 b5 Ret b1->b5 1 b2->b5 0 b4 b4 NE b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 EQ b4->b8 1 b7->b8 0 b10 b10 LT b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 NE b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 ULT b14->b15 0 b16 b16 NE b15->b16 0 b18 b18 Ret b15->b18 1 b28 b28 EQ b16->b28 0 b19 b19 ULE b16->b19 1 b19->b28 0 b24 b24 EQ b19->b24 1 b34 b34 Ret b24->b34 0 b30 b30 NE b24->b30 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 ULT b37->b38 0 b39 b39 NE b38->b39 0 b41 b41 NE b38->b41 1 b51 b51 EQ b39->b51 0 b42 b42 ULE b39->b42 1 b68 b68 NE b41->b68 0 b66 b66 Ret b41->b66 1 b42->b51 0 b47 b47 EQ b42->b47 1 b55 b55 Ret b47->b55 0 b53 b53 NE b47->b53 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 NE b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 NE b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 NE b75->b78 0 b76 b76 ULT b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b84 b84 ULT b78->b84 0 b80 b80 Plain b78->b80 1 b80->b84 0 b85 b85 Plain b84->b85 0 b86 b86 Plain b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b103 b103 NE b89->b103 0 b90 b90 Plain b95 b95 Plain b90->b95 0 b93 b93 Ret b96 b96 ULT b95->b96 0 b97 b97 NE b96->b97 0 b113 b113 NE b96->b113 1 b105 b105 Plain b97->b105 0 b100 b100 NE b97->b100 1 b100->b105 0 b104 b104 EQ b100->b104 1 b110 b110 Ret b104->b110 0 b106 b106 NE b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0 b113->b93 1 b103->b90 0 b103->b93 1
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v8 (13) = ArgIntReg <*abi.MapType> {t+0} [0] (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = ArgIntReg <*hmap> {h+0} [1] (h[*hmap], h[*hmap])
      • v69 (?) = MOVQconst <uintptr> [8] (x[uintptr], x[uintptr], keymaybe[uintptr], x[uintptr])
      • v75 (?) = MOVQconst <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v173 (?) = MOVQconst <uintptr> [1]
      • v661 (?) = LEAQ <*uint8> {go:string."concurrent map read and map write"} v3
      • v581 (?) = MOVQconst <int> [33]
      • v623 (13) = ArgIntReg <*uint8> {ky+0} [2]
      • v613 (13) = ArgIntReg <int> {ky+8} [3]
      • v505 (?) = SPanchored <uintptr> v2 v1
      • v580 (+18) = TESTQ <flags> v9 v9
      • v6 (?) = LEAQ <*string> {ky} v505 (p[unsafe.Pointer], sp[*string], key[*stringStruct], ~R0[*stringStruct])
      • v617 (+13) = MOVQstore <mem> {ky} v505 v623 v1
      • v524 (+13) = MOVQstore <mem> {ky} [8] v505 v613 v617
    • NE v580b2 b5 (18)
    • b2: ← b1
      • v610 (18) = CMPQconstload <flags> [val=0,off=0] v9 v524
    • EQ v610b5 b4 (18)
    • b4: ← b2
      • v33 (+21) = MOVBload <uint8> [8] v9 v524
      • v684 (21) = TESTBconst <flags> [4] v33
    • NE v684b7 b8 (21)
    • b5: ← b2 b1
      • v25 (19) = LEAQ <*byte> {runtime.zeroVal} v3
      • v27 (+19) = MakeResult <unsafe.Pointer,mem> v25 v524
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = CALLstatic <mem> {AuxCall{runtime.fatal}} [16] v661 v581 v524
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v524 v41
      • v611 (+25) = CMPBconstload <flags> [val=0,off=9] v9 v42
    • EQ v611b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v57 (+27) = MOVQload <unsafe.Pointer> [16] v9 v42 (p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer])
      • v62 (+28) = MOVQload <int> {ky} [8] v505 v42
      • v112 (28) = CMPQconst <flags> [32] v62
    • LT v112b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v73 (+18) = ADDQconst <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v694 (+30) = CMPQconst <flags> [8] v77
    • ULT v694b16 b18 (likely) (30)
    • b16: ← b15
      • v88 (+32) = MOVQload <int> {ky} [8] v505 v810
      • v489 (+32) = CMPQload <flags> [8] v816 v88 v810
    • NE v489b28 b19 (32)
    • b18: ← b15 b27
      • v177 (42) = LEAQ <*byte> {runtime.zeroVal} v3
      • v179 (+42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b16
      • v92 (32) = LoweredNilCheck <void> v57 v810
      • v634 (32) = MOVBloadidx1 <uint8> v57 v77 v810
      • v488 (32) = CMPBconst <flags> [1] v634
    • ULE v488b28 b24 (+32)
    • b24: ← b19
      • v123 (+38) = MOVQload <unsafe.Pointer> v816 v810
      • v127 (38) = MOVQload <unsafe.Pointer> {ky} v505 v810
      • v672 (38) = CMPQ <flags> v127 v123
    • EQ v672b34 b30 (38)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b19 b16
      • v109 (+33) = LoweredNilCheck <void> v57 v810
      • v95 (33) = MOVBloadidx1 <uint8> v57 v77 v810
      • v438 (33) = TESTB <flags> v95 v95
    • EQ v438b27 b26 (33)
    • b30: ← b24
      • v142 (38) = CALLstatic <bool,mem> {AuxCall{runtime.memequal}} [24] v123 v127 v88 v810
      • v144 (38) = SelectN <bool> [0] v142
      • v143 (38) = SelectN <mem> [1] v142
      • v396 (38) = TESTB <flags> v144 v144
    • NE v396b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v152 (+39) = LoweredNilCheck <void> v8 v703
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v711 (39) = MOVBload <uintptr> [81] v8 v703
      • v156 (39) = MULQ <uintptr> v77 v711
      • v160 (18) = LEAQ1 <uintptr> [136] v159 v156
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v171 (+18) = ADDQconst <unsafe.Pointer> [16] v816 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v174 (+30) = ADDQconst <uintptr> [1] v77 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v188 (+18) = ADDQconst <unsafe.Pointer> [8] v57 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (keymaybe[uintptr], i[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v377 (+46) = CMPQconst <flags> [8] v191
    • ULT v377b39 b41 (likely) (46)
    • b39: ← b38
      • v351 (+48) = CMPQload <flags> [8] v794 v62 v42
    • NE v351b51 b42 (48)
    • b41: ← b38 b50
      • v335 (+71) = CMPQconst <flags> [8] v789
    • NE v335b68 b66 (71)
    • b42: ← b39
      • v206 (48) = LoweredNilCheck <void> v57 v42
      • v486 (48) = MOVBloadidx1 <uint8> v57 v191 v42
      • v487 (48) = CMPBconst <flags> [1] v486
    • ULE v487b51 b47 (+48)
    • b47: ← b42
      • v235 (+54) = MOVQload <unsafe.Pointer> v794 v42
      • v239 (54) = MOVQload <unsafe.Pointer> {ky} v505 v42
      • v604 (54) = CMPQ <flags> v239 v235
    • EQ v604b55 b53 (54)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b42 b39
      • v221 (+49) = LoweredNilCheck <void> v57 v42
      • v597 (49) = MOVBloadidx1 <uint8> v57 v191 v42
      • v436 (49) = TESTB <flags> v597 v597
    • EQ v436b50 b49 (49)
    • b53: ← b47
      • v270 (+58) = LoweredNilCheck <void> v239 v42
      • v303 (58) = LoweredNilCheck <void> v235 v42
      • v211 (58) = MOVLload <uint32> v235 v42
      • v82 (58) = CMPLload <flags> v239 v211 v42
    • NE v82b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = LoweredNilCheck <void> v8 v42
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v713 (55) = MOVBload <uintptr> [81] v8 v42
      • v250 (55) = MULQ <uintptr> v713 v191
      • v254 (18) = LEAQ1 <uintptr> [136] v250 v253
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v341 (+62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v239 v42
      • v343 (18) = LEAQ1 <uintptr> [-4] v342 v62
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v356 (+62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v235 v42
      • v358 (18) = LEAQ1 <uintptr> [-4] v357 v62
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = LoweredNilCheck <void> v344 v42
      • v391 (62) = LoweredNilCheck <void> v359 v42
      • v98 (62) = MOVLload <uint32> v359 v42
      • v562 (62) = CMPLload <flags> v344 v98 v42
    • NE v562b61 b60 (62)
    • b60: ← b59
      • v545 (+65) = CMPQconst <flags> [8] v789
    • NE v545b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v426 (+18) = ADDQconst <unsafe.Pointer> [16] v794 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v428 (+46) = ADDQconst <uintptr> [1] v191 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (77) = LEAQ <*byte> {runtime.zeroVal} v3
      • v482 (+77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v453 (73) = MOVQload <unsafe.Pointer> {ky} v505 v42
      • v456 (+72) = SHLQconst <uintptr> [4] v789
      • v442 (18) = LEAQ1 <uintptr> [8] v456 v441
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v449 (73) = MOVQload <unsafe.Pointer> v443 v42
      • v458 (73) = CALLstatic <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v62 v42
      • v460 (73) = SelectN <bool> [0] v458
      • v459 (73) = SelectN <mem> [1] v458
      • v506 (73) = TESTB <flags> v460 v460
      • v447 (+73) = LoweredNilCheck <void> v443 v42
    • NE v506b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = LoweredNilCheck <void> v8 v459
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v606 (74) = MOVBload <uintptr> [81] v8 v459
      • v470 (74) = MULQ <uintptr> v789 v606
      • v474 (18) = LEAQ1 <uintptr> [136] v473 v470
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v497 (80) = LoweredNilCheck <void> v8 v42
      • v499 (+80) = MOVQload <func(unsafe.Pointer, uintptr) uintptr> [72] v8 v42
      • v501 (80) = MOVQload <uintptr> v499 v42
      • v607 (+80) = MOVLload <uintptr> [12] v9 v42
      • v502 (80) = CALLclosure <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v6 v607 v42
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v503 (80) = SelectN <mem> [1] v502
      • v507 (+81) = MOVBload <uint8> [9] v9 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v512 (+187) = SHLQ <uintptr> v173 v507 (~R0[uintptr])
      • v514 (+192) = ADDQconst <uintptr> [-1] v512 (m[uintptr], ~R0[uintptr])
      • v522 (+82) = ANDQ <uintptr> v514 v504
      • v529 (82) = InlMark <void> [5620] v503
      • v539 (+83) = MOVQload <unsafe.Pointer> [24] v9 v503 (p[unsafe.Pointer], c[unsafe.Pointer])
      • v349 (83) = TESTQ <flags> v539 v539
      • v720 (82) = MOVWload <uintptr> [82] v8 v503
      • v528 (82) = MULQ <uintptr> v522 v720 (x[uintptr])
      • v532 (+18) = ADDQload <unsafe.Pointer> [16] v528 v9 v503 (~R0[unsafe.Pointer], b[*bmap])
    • NE v349b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v337 (+197) = SHRQconst <uintptr> [56] v504
      • v333 (+198) = CMPBconst <flags> [5] v337
    • ULT v333b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v546 (+1128) = MOVBload <uint8> [8] v9 v503
      • v267 (1128) = TESTBconst <flags> [8] v546
    • NE v267b84 b80 (+84)
    • b80: ← b78
      • v263 (+86) = SHRQconst <uintptr> [1] v514
    • Plainb84 (+86)
    • b84: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v263 (m[uintptr])
      • v557 (+88) = ANDQ <uintptr> v556 v504
      • v564 (88) = MULQ <uintptr> v557 v720 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v568 (+18) = ADDQ <unsafe.Pointer> v539 v564 (oldb[*bmap], b[*bmap], ~R0[unsafe.Pointer], b[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v576 (+205) = MOVBloadidx1 <uint8> v539 v564 v503 (h[uint8])
      • v518 (+206) = ADDLconst <uint8> [-2] v576
      • v140 (+206) = CMPBconst <flags> [3] v518
    • ULT v140b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = ADDLconst <uint8> [5] v337 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v337 v592 (top[uint8], ~R0[uint8], top[uint8])
    • Plainb103 (+94)
    • b90: ← b103 b113
      • v753 (105) = Phi <mem> v503 v751
    • Plainb95 (94)
    • b93: ← b113 b103
      • v637 (94) = Phi <*bmap> v707 v756
      • v626 (105) = Phi <mem> v751 v503
      • v710 (105) = LEAQ <*byte> {runtime.zeroVal} v3
      • v712 (+105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v626
      • v602 (+218) = InlMark <void> [5633] v626
      • v605 (+18) = ADDQconst <unsafe.Pointer> [8] v637 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v626 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v137 (+95) = CMPQconst <flags> [8] v608
    • ULT v137b97 b113 (likely) (95)
    • b97: ← b96
      • v619 (+97) = MOVQload <int> {ky} [8] v505 v751
      • v471 (+97) = CMPQload <flags> [8] v752 v619 v751
    • NE v471b105 b100 (97)
    • b100: ← b97
      • v689 (97) = MOVBloadidx1 <uint8> v637 v608 v751
      • v567 (97) = CMPB <flags> v689 v593
    • NE v567b105 b104 (97)
    • b104: ← b100
      • v639 (+100) = MOVQload <unsafe.Pointer> v752 v751
      • v643 (100) = MOVQload <unsafe.Pointer> {ky} v505 v751
      • v566 (100) = CMPQ <flags> v643 v639
    • EQ v566b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v658 (100) = CALLstatic <bool,mem> {AuxCall{runtime.memequal}} [24] v639 v643 v619 v751
      • v660 (100) = SelectN <bool> [0] v658
      • v659 (100) = SelectN <mem> [1] v658
      • v176 (100) = TESTB <flags> v660 v660
    • NE v176b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v637 v704
      • v531 (+101) = MOVBload <uintptr> [81] v8 v704
      • v671 (+101) = MULQ <uintptr> v608 v531
      • v675 (18) = LEAQ1 <uintptr> [136] v674 v671
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v685 (+18) = ADDQconst <unsafe.Pointer> [16] v752 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v687 (+95) = ADDQconst <uintptr> [1] v608 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v699 (+210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v637 v751
      • v530 (+210) = MOVWload <uintptr> [82] v8 v751
      • v701 (18) = LEAQ1 <uintptr> [-8] v700 v530
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = LoweredNilCheck <void> v702 v751
      • v707 (210) = MOVQload <*bmap> v702 v751 (~R0[*bmap], b[*bmap])
      • v630 (+94) = TESTQ <flags> v707 v707
    • NE v630b90 b93 (+94)
    • b103: ← b89
      • v698 (+94) = TESTQ <flags> v756 v756
    • NE v698b90 b93 (likely)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v255
  • name ~R0[unsafe.Pointer]: v344
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v556
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name hash[uintptr]: v504
  • name top[uint8]: v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name ~R0[unsafe.Pointer]: v685
  • name t[*abi.MapType]: v8
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • lowered cse [90501 ns]

    b1 b1 NE b2 b2 EQ b1->b2 0 b5 b5 Ret b1->b5 1 b2->b5 0 b4 b4 NE b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 EQ b4->b8 1 b7->b8 0 b10 b10 LT b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 NE b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 ULT b14->b15 0 b16 b16 NE b15->b16 0 b18 b18 Ret b15->b18 1 b28 b28 EQ b16->b28 0 b19 b19 ULE b16->b19 1 b19->b28 0 b24 b24 EQ b19->b24 1 b34 b34 Ret b24->b34 0 b30 b30 NE b24->b30 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 ULT b37->b38 0 b39 b39 NE b38->b39 0 b41 b41 NE b38->b41 1 b51 b51 EQ b39->b51 0 b42 b42 ULE b39->b42 1 b68 b68 NE b41->b68 0 b66 b66 Ret b41->b66 1 b42->b51 0 b47 b47 EQ b42->b47 1 b55 b55 Ret b47->b55 0 b53 b53 NE b47->b53 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 NE b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 NE b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 NE b75->b78 0 b76 b76 ULT b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b84 b84 ULT b78->b84 0 b80 b80 Plain b78->b80 1 b80->b84 0 b85 b85 Plain b84->b85 0 b86 b86 Plain b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b103 b103 NE b89->b103 0 b90 b90 Plain b95 b95 Plain b90->b95 0 b93 b93 Ret b96 b96 ULT b95->b96 0 b97 b97 NE b96->b97 0 b113 b113 NE b96->b113 1 b105 b105 Plain b97->b105 0 b100 b100 NE b97->b100 1 b100->b105 0 b104 b104 EQ b100->b104 1 b110 b110 Ret b104->b110 0 b106 b106 NE b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0 b113->b93 1 b103->b90 0 b103->b93 1
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v8 (13) = ArgIntReg <*abi.MapType> {t+0} [0] (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = ArgIntReg <*hmap> {h+0} [1] (h[*hmap], h[*hmap])
      • v69 (?) = MOVQconst <uintptr> [8] (x[uintptr], keymaybe[uintptr], x[uintptr], x[uintptr])
      • v75 (?) = MOVQconst <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v173 (?) = MOVQconst <uintptr> [1]
      • v661 (?) = LEAQ <*uint8> {go:string."concurrent map read and map write"} v3
      • v581 (?) = MOVQconst <int> [33]
      • v623 (13) = ArgIntReg <*uint8> {ky+0} [2]
      • v613 (13) = ArgIntReg <int> {ky+8} [3]
      • v505 (?) = SPanchored <uintptr> v2 v1
      • v580 (+18) = TESTQ <flags> v9 v9
      • v6 (?) = LEAQ <*string> {ky} v505 (~R0[*stringStruct], p[unsafe.Pointer], sp[*string], key[*stringStruct])
      • v617 (+13) = MOVQstore <mem> {ky} v505 v623 v1
      • v524 (+13) = MOVQstore <mem> {ky} [8] v505 v613 v617
    • NE v580b2 b5 (18)
    • b2: ← b1
      • v610 (18) = CMPQconstload <flags> [val=0,off=0] v9 v524
    • EQ v610b5 b4 (18)
    • b4: ← b2
      • v33 (+21) = MOVBload <uint8> [8] v9 v524
      • v684 (21) = TESTBconst <flags> [4] v33
    • NE v684b7 b8 (21)
    • b5: ← b2 b1
      • v25 (19) = LEAQ <*byte> {runtime.zeroVal} v3
      • v27 (+19) = MakeResult <unsafe.Pointer,mem> v25 v524
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = CALLstatic <mem> {AuxCall{runtime.fatal}} [16] v661 v581 v524
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v524 v41
      • v611 (+25) = CMPBconstload <flags> [val=0,off=9] v9 v42
    • EQ v611b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v57 (+27) = MOVQload <unsafe.Pointer> [16] v9 v42 (p[unsafe.Pointer], b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap])
      • v62 (+28) = MOVQload <int> {ky} [8] v505 v42
      • v112 (28) = CMPQconst <flags> [32] v62
    • LT v112b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v73 (+18) = ADDQconst <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v694 (+30) = CMPQconst <flags> [8] v77
    • ULT v694b16 b18 (likely) (30)
    • b16: ← b15
      • v88 (+32) = MOVQload <int> {ky} [8] v505 v810
      • v489 (+32) = CMPQload <flags> [8] v816 v88 v810
    • NE v489b28 b19 (32)
    • b18: ← b15 b27
      • v177 (42) = LEAQ <*byte> {runtime.zeroVal} v3
      • v179 (+42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b16
      • v92 (32) = LoweredNilCheck <void> v57 v810
      • v634 (32) = MOVBloadidx1 <uint8> v77 v57 v810
      • v488 (32) = CMPBconst <flags> [1] v634
    • ULE v488b28 b24 (+32)
    • b24: ← b19
      • v123 (+38) = MOVQload <unsafe.Pointer> v816 v810
      • v127 (38) = MOVQload <unsafe.Pointer> {ky} v505 v810
      • v672 (38) = CMPQ <flags> v127 v123
    • EQ v672b34 b30 (38)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b19 b16
      • v109 (+33) = LoweredNilCheck <void> v57 v810
      • v95 (33) = MOVBloadidx1 <uint8> v77 v57 v810
      • v438 (33) = TESTB <flags> v95 v95
    • EQ v438b27 b26 (33)
    • b30: ← b24
      • v142 (38) = CALLstatic <bool,mem> {AuxCall{runtime.memequal}} [24] v123 v127 v88 v810
      • v144 (38) = SelectN <bool> [0] v142
      • v143 (38) = SelectN <mem> [1] v142
      • v396 (38) = TESTB <flags> v144 v144
    • NE v396b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v152 (+39) = LoweredNilCheck <void> v8 v703
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v711 (39) = MOVBload <uintptr> [81] v8 v703
      • v156 (39) = MULQ <uintptr> v77 v711
      • v160 (18) = LEAQ1 <uintptr> [136] v159 v156
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v171 (+18) = ADDQconst <unsafe.Pointer> [16] v816 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v174 (+30) = ADDQconst <uintptr> [1] v77 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v188 (+18) = ADDQconst <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (keymaybe[uintptr], i[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v377 (+46) = CMPQconst <flags> [8] v191
    • ULT v377b39 b41 (likely) (46)
    • b39: ← b38
      • v351 (+48) = CMPQload <flags> [8] v794 v62 v42
    • NE v351b51 b42 (48)
    • b41: ← b38 b50
      • v335 (+71) = CMPQconst <flags> [8] v789
    • NE v335b68 b66 (71)
    • b42: ← b39
      • v206 (48) = LoweredNilCheck <void> v57 v42
      • v486 (48) = MOVBloadidx1 <uint8> v191 v57 v42
      • v487 (48) = CMPBconst <flags> [1] v486
    • ULE v487b51 b47 (+48)
    • b47: ← b42
      • v235 (+54) = MOVQload <unsafe.Pointer> v794 v42
      • v239 (54) = MOVQload <unsafe.Pointer> {ky} v505 v42
      • v604 (54) = CMPQ <flags> v239 v235
    • EQ v604b55 b53 (54)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b42 b39
      • v221 (+49) = LoweredNilCheck <void> v57 v42
      • v597 (49) = MOVBloadidx1 <uint8> v191 v57 v42
      • v436 (49) = TESTB <flags> v597 v597
    • EQ v436b50 b49 (49)
    • b53: ← b47
      • v270 (+58) = LoweredNilCheck <void> v239 v42
      • v303 (58) = LoweredNilCheck <void> v235 v42
      • v211 (58) = MOVLload <uint32> v235 v42
      • v82 (58) = CMPLload <flags> v239 v211 v42
    • NE v82b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = LoweredNilCheck <void> v8 v42
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v713 (55) = MOVBload <uintptr> [81] v8 v42
      • v250 (55) = MULQ <uintptr> v191 v713
      • v254 (18) = LEAQ1 <uintptr> [136] v250 v253
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v341 (+62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v239 v42
      • v343 (18) = LEAQ1 <uintptr> [-4] v342 v62
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v356 (+62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v235 v42
      • v358 (18) = LEAQ1 <uintptr> [-4] v357 v62
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = LoweredNilCheck <void> v344 v42
      • v391 (62) = LoweredNilCheck <void> v359 v42
      • v98 (62) = MOVLload <uint32> v359 v42
      • v562 (62) = CMPLload <flags> v344 v98 v42
    • NE v562b61 b60 (62)
    • b60: ← b59
      • v545 (+65) = CMPQconst <flags> [8] v789
    • NE v545b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v426 (+18) = ADDQconst <unsafe.Pointer> [16] v794 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v428 (+46) = ADDQconst <uintptr> [1] v191 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (77) = LEAQ <*byte> {runtime.zeroVal} v3
      • v482 (+77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v453 (73) = MOVQload <unsafe.Pointer> {ky} v505 v42
      • v456 (+72) = SHLQconst <uintptr> [4] v789
      • v442 (18) = LEAQ1 <uintptr> [8] v456 v441
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (~R0[unsafe.Pointer], k[*stringStruct])
      • v449 (73) = MOVQload <unsafe.Pointer> v443 v42
      • v458 (73) = CALLstatic <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v62 v42
      • v460 (73) = SelectN <bool> [0] v458
      • v459 (73) = SelectN <mem> [1] v458
      • v506 (73) = TESTB <flags> v460 v460
      • v447 (+73) = LoweredNilCheck <void> v443 v42
    • NE v506b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = LoweredNilCheck <void> v8 v459
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v606 (74) = MOVBload <uintptr> [81] v8 v459
      • v470 (74) = MULQ <uintptr> v789 v606
      • v474 (18) = LEAQ1 <uintptr> [136] v473 v470
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v497 (80) = LoweredNilCheck <void> v8 v42
      • v499 (+80) = MOVQload <func(unsafe.Pointer, uintptr) uintptr> [72] v8 v42
      • v501 (80) = MOVQload <uintptr> v499 v42
      • v607 (+80) = MOVLload <uintptr> [12] v9 v42
      • v502 (80) = CALLclosure <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v6 v607 v42
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v503 (80) = SelectN <mem> [1] v502
      • v507 (+81) = MOVBload <uint8> [9] v9 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v512 (+187) = SHLQ <uintptr> v173 v507 (~R0[uintptr])
      • v514 (+192) = ADDQconst <uintptr> [-1] v512 (m[uintptr], ~R0[uintptr])
      • v522 (+82) = ANDQ <uintptr> v514 v504
      • v529 (82) = InlMark <void> [5620] v503
      • v539 (+83) = MOVQload <unsafe.Pointer> [24] v9 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v349 (83) = TESTQ <flags> v539 v539
      • v720 (82) = MOVWload <uintptr> [82] v8 v503
      • v528 (82) = MULQ <uintptr> v720 v522 (x[uintptr])
      • v532 (+18) = ADDQload <unsafe.Pointer> [16] v528 v9 v503 (b[*bmap], ~R0[unsafe.Pointer])
    • NE v349b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v337 (+197) = SHRQconst <uintptr> [56] v504
      • v333 (+198) = CMPBconst <flags> [5] v337
    • ULT v333b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v546 (+1128) = MOVBload <uint8> [8] v9 v503
      • v267 (1128) = TESTBconst <flags> [8] v546
    • NE v267b84 b80 (+84)
    • b80: ← b78
      • v263 (+86) = SHRQconst <uintptr> [1] v514
    • Plainb84 (+86)
    • b84: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v263 (m[uintptr])
      • v557 (+88) = ANDQ <uintptr> v556 v504
      • v564 (88) = MULQ <uintptr> v720 v557 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v568 (+18) = ADDQ <unsafe.Pointer> v539 v564 (b[*bmap], ~R0[unsafe.Pointer], b[*bmap], oldb[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v576 (+205) = MOVBloadidx1 <uint8> v539 v564 v503 (h[uint8])
      • v518 (+206) = ADDLconst <uint8> [-2] v576
      • v140 (+206) = CMPBconst <flags> [3] v518
    • ULT v140b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = ADDLconst <uint8> [5] v337 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v337 v592 (top[uint8], top[uint8], ~R0[uint8])
    • Plainb103 (+94)
    • b90: ← b103 b113
      • v753 (105) = Phi <mem> v503 v751
    • Plainb95 (94)
    • b93: ← b113 b103
      • v637 (94) = Phi <*bmap> v707 v756
      • v626 (105) = Phi <mem> v751 v503
      • v710 (105) = LEAQ <*byte> {runtime.zeroVal} v3
      • v712 (+105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v626
      • v602 (+218) = InlMark <void> [5633] v626
      • v605 (+18) = ADDQconst <unsafe.Pointer> [8] v637 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v626 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v137 (+95) = CMPQconst <flags> [8] v608
    • ULT v137b97 b113 (likely) (95)
    • b97: ← b96
      • v619 (+97) = MOVQload <int> {ky} [8] v505 v751
      • v471 (+97) = CMPQload <flags> [8] v752 v619 v751
    • NE v471b105 b100 (97)
    • b100: ← b97
      • v689 (97) = MOVBloadidx1 <uint8> v637 v608 v751
      • v567 (97) = CMPB <flags> v689 v593
    • NE v567b105 b104 (97)
    • b104: ← b100
      • v639 (+100) = MOVQload <unsafe.Pointer> v752 v751
      • v643 (100) = MOVQload <unsafe.Pointer> {ky} v505 v751
      • v566 (100) = CMPQ <flags> v643 v639
    • EQ v566b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v658 (100) = CALLstatic <bool,mem> {AuxCall{runtime.memequal}} [24] v639 v643 v619 v751
      • v660 (100) = SelectN <bool> [0] v658
      • v659 (100) = SelectN <mem> [1] v658
      • v176 (100) = TESTB <flags> v660 v660
    • NE v176b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v637 v704
      • v531 (+101) = MOVBload <uintptr> [81] v8 v704
      • v671 (+101) = MULQ <uintptr> v608 v531
      • v675 (18) = LEAQ1 <uintptr> [136] v674 v671
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v685 (+18) = ADDQconst <unsafe.Pointer> [16] v752 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v687 (+95) = ADDQconst <uintptr> [1] v608 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v699 (+210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v637 v751
      • v530 (+210) = MOVWload <uintptr> [82] v8 v751
      • v701 (18) = LEAQ1 <uintptr> [-8] v700 v530
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = LoweredNilCheck <void> v702 v751
      • v707 (210) = MOVQload <*bmap> v702 v751 (~R0[*bmap], b[*bmap])
      • v630 (+94) = TESTQ <flags> v707 v707
    • NE v630b90 b93 (+94)
    • b103: ← b89
      • v698 (+94) = TESTQ <flags> v756 v756
    • NE v698b90 b93 (likely)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v255
  • name ~R0[unsafe.Pointer]: v344
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v556
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name hash[uintptr]: v504
  • name top[uint8]: v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name ~R0[unsafe.Pointer]: v685
  • name t[*abi.MapType]: v8
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707
  • elim unread autos [2742 ns]

    tighten tuple selectors [7523 ns]

    lowered deadcode [53527 ns]

    checkLower [5140 ns]

    late phielim [5770 ns]

    late copyelim [8751 ns]

    tighten crashed

    b1 b1 NE b2 b2 EQ b1->b2 0 b5 b5 Ret b1->b5 1 b2->b5 0 b4 b4 NE b2->b4 1 b7 b7 Plain b4->b7 0 b8 b8 EQ b4->b8 1 b7->b8 0 b10 b10 LT b8->b10 0 b9 b9 Plain b8->b9 1 b75 b75 NE b9->b75 0 b14 b14 Plain b10->b14 0 b37 b37 Plain b10->b37 1 b15 b15 ULT b14->b15 0 b16 b16 NE b15->b16 0 b18 b18 Ret b15->b18 1 b28 b28 EQ b16->b28 0 b19 b19 ULE b16->b19 1 b19->b28 0 b24 b24 EQ b19->b24 1 b34 b34 Ret b24->b34 0 b30 b30 NE b24->b30 1 b26 b26 Plain b35 b35 Plain b26->b35 0 b27 b27 Plain b27->b18 0 b28->b27 0 b28->b26 1 b30->b34 0 b32 b32 Plain b30->b32 1 b32->b35 0 b35->b15 0 b38 b38 ULT b37->b38 0 b39 b39 NE b38->b39 0 b41 b41 NE b38->b41 1 b51 b51 EQ b39->b51 0 b42 b42 ULE b39->b42 1 b68 b68 NE b41->b68 0 b66 b66 Ret b41->b66 1 b42->b51 0 b47 b47 EQ b42->b47 1 b55 b55 Ret b47->b55 0 b53 b53 NE b47->b53 1 b49 b49 Plain b65 b65 Plain b49->b65 0 b50 b50 Plain b50->b41 0 b51->b50 0 b51->b49 1 b57 b57 Plain b53->b57 0 b59 b59 NE b53->b59 1 b57->b65 0 b61 b61 Plain b59->b61 0 b60 b60 NE b59->b60 1 b63 b63 Plain b60->b63 0 b62 b62 Plain b60->b62 1 b61->b65 0 b62->b65 0 b63->b75 0 b65->b38 0 b71 b71 Ret b68->b71 0 b69 b69 Plain b68->b69 1 b69->b66 0 b78 b78 NE b75->b78 0 b76 b76 ULT b75->b76 1 b88 b88 Plain b76->b88 0 b89 b89 Plain b76->b89 1 b84 b84 ULT b78->b84 0 b80 b80 Plain b78->b80 1 b80->b84 0 b85 b85 Plain b84->b85 0 b86 b86 Plain b84->b86 1 b85->b76 0 b86->b85 0 b88->b89 0 b103 b103 NE b89->b103 0 b90 b90 Plain b95 b95 Plain b90->b95 0 b93 b93 Ret b96 b96 ULT b95->b96 0 b97 b97 NE b96->b97 0 b113 b113 NE b96->b113 1 b105 b105 Plain b97->b105 0 b100 b100 NE b97->b100 1 b100->b105 0 b104 b104 EQ b100->b104 1 b110 b110 Ret b104->b110 0 b106 b106 NE b104->b106 1 b111 b111 Plain b105->b111 0 b106->b110 0 b108 b108 Plain b106->b108 1 b108->b111 0 b111->b96 0 b113->b90 0 b113->b93 1 b103->b90 0 b103->b93 1
    • b1:
      • v1 (?) = InitMem <mem>
      • v2 (?) = SP <uintptr>
      • v3 (?) = SB <uintptr>
      • v8 (13) = ArgIntReg <*abi.MapType> {t+0} [0] (t[*abi.MapType], t[*abi.MapType])
      • v9 (13) = ArgIntReg <*hmap> {h+0} [1] (h[*hmap], h[*hmap])
      • v69 (?) = MOVQconst <uintptr> [8] (x[uintptr], x[uintptr], keymaybe[uintptr], x[uintptr])
      • v75 (?) = MOVQconst <uintptr> [0] (i[uintptr], i[uintptr], i[uintptr])
      • v173 (?) = MOVQconst <uintptr> [1]
      • v661 (?) = LEAQ <*uint8> {go:string."concurrent map read and map write"} v3
      • v581 (?) = MOVQconst <int> [33]
      • v623 (13) = ArgIntReg <*uint8> {ky+0} [2]
      • v613 (13) = ArgIntReg <int> {ky+8} [3]
      • v505 (?) = SPanchored <uintptr> v2 v1
      • v580 (+18) = TESTQ <flags> v9 v9
      • v6 (?) = LEAQ <*string> {ky} v505 (key[*stringStruct], sp[*string], ~R0[*stringStruct], p[unsafe.Pointer])
      • v617 (+13) = MOVQstore <mem> {ky} v505 v623 v1
      • v524 (+13) = MOVQstore <mem> {ky} [8] v505 v613 v617
    • NE v580b2 b5 (18)
    • b2: ← b1
      • v610 (18) = CMPQconstload <flags> [val=0,off=0] v9 v524
    • EQ v610b5 b4 (18)
    • b4: ← b2
      • v33 (+21) = MOVBload <uint8> [8] v9 v524
      • v684 (21) = TESTBconst <flags> [4] v33
    • NE v684b7 b8 (21)
    • b5: ← b2 b1
      • v25 (19) = LEAQ <*byte> {runtime.zeroVal} v3
      • v27 (+19) = MakeResult <unsafe.Pointer,mem> v25 v524
    • Ret v27 (+19)
    • b7: ← b4
      • v40 (+22) = CALLstatic <mem> {AuxCall{runtime.fatal}} [16] v661 v581 v524
      • v41 (22) = SelectN <mem> [0] v40
    • Plainb8 (22)
    • b8: ← b4 b7
      • v42 (24) = Phi <mem> v524 v41
      • v611 (+25) = CMPBconstload <flags> [val=0,off=9] v9 v42
    • EQ v611b10 b9 (25)
    • b9: ← b8
    • Plainb75 (25)
    • b10: ← b8
      • v57 (+27) = MOVQload <unsafe.Pointer> [16] v9 v42 (b[*bmap], b[*bmap], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], p[unsafe.Pointer], b[*bmap], p[unsafe.Pointer])
      • v62 (+28) = MOVQload <int> {ky} [8] v505 v42
      • v112 (28) = CMPQconst <flags> [32] v62
    • LT v112b14 b37 (28)
    • b14: ← b10
      • v67 (+30) = InlMark <void> [5606] v42
      • v70 (+218) = InlMark <void> [5629] v42
      • v73 (+18) = ADDQconst <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb15 (+30)
    • b15: ← b14 b35
      • v77 (30) = Phi <uintptr> v75 v174 (i[uintptr])
      • v810 (42) = Phi <mem> v42 v167
      • v816 (31) = Phi <unsafe.Pointer> v73 v171 (k[*stringStruct], p[unsafe.Pointer], kptr[unsafe.Pointer])
      • v694 (+30) = CMPQconst <flags> [8] v77
    • ULT v694b16 b18 (likely) (30)
    • b16: ← b15
      • v88 (+32) = MOVQload <int> {ky} [8] v505 v810
      • v489 (+32) = CMPQload <flags> [8] v816 v88 v810
    • NE v489b28 b19 (32)
    • b18: ← b15 b27
      • v177 (42) = LEAQ <*byte> {runtime.zeroVal} v3
      • v179 (+42) = MakeResult <unsafe.Pointer,mem> v177 v810
    • Ret v179 (+42)
    • b19: ← b16
      • v92 (32) = LoweredNilCheck <void> v57 v810
      • v634 (32) = MOVBloadidx1 <uint8> v77 v57 v810
      • v488 (32) = CMPBconst <flags> [1] v634
    • ULE v488b28 b24 (+32)
    • b24: ← b19
      • v123 (+38) = MOVQload <unsafe.Pointer> v816 v810
      • v127 (38) = MOVQload <unsafe.Pointer> {ky} v505 v810
      • v672 (38) = CMPQ <flags> v127 v123
    • EQ v672b34 b30 (38)
    • b26: ← b28
    • Plainb35 (+36)
    • b27: ← b28
    • Plainb18 (+34)
    • b28: ← b19 b16
      • v109 (+33) = LoweredNilCheck <void> v57 v810
      • v95 (33) = MOVBloadidx1 <uint8> v77 v57 v810
      • v438 (33) = TESTB <flags> v95 v95
    • EQ v438b27 b26 (33)
    • b30: ← b24
      • v142 (38) = CALLstatic <bool,mem> {AuxCall{runtime.memequal}} [24] v123 v127 v88 v810
      • v144 (38) = SelectN <bool> [0] v142
      • v143 (38) = SelectN <mem> [1] v142
      • v396 (38) = TESTB <flags> v144 v144
    • NE v396b34 b32 (38)
    • b32: ← b30
    • Plainb35 (38)
    • b34: ← b30 b24
      • v703 (39) = Phi <mem> v143 v810
      • v152 (+39) = LoweredNilCheck <void> v8 v703
      • v158 (39) = InlMark <void> [5609] v703
      • v159 (+18) = Convert <uintptr> v57 v703
      • v711 (39) = MOVBload <uintptr> [81] v8 v703
      • v156 (39) = MULQ <uintptr> v77 v711
      • v160 (18) = LEAQ1 <uintptr> [136] v159 v156
      • v161 (18) = Convert <unsafe.Pointer> v160 v703 (~R0[unsafe.Pointer])
      • v163 (+39) = MakeResult <unsafe.Pointer,mem> v161 v703
    • Ret v163 (+39)
    • b35: ← b26 b32
      • v167 (30) = Phi <mem> v810 v143
      • v168 (+30) = InlMark <void> [5607] v167
      • v171 (+18) = ADDQconst <unsafe.Pointer> [16] v816 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v174 (+30) = ADDQconst <uintptr> [1] v77 (i[uintptr])
    • Plainb15 (30)
    • b37: ← b10
      • v183 (+46) = InlMark <void> [5610] v42
      • v185 (+218) = InlMark <void> [5630] v42
      • v188 (+18) = ADDQconst <unsafe.Pointer> [8] v57 (~R0[unsafe.Pointer], kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
    • Plainb38 (+46)
    • b38: ← b37 b65
      • v191 (46) = Phi <uintptr> v75 v428 (i[uintptr], keymaybe[uintptr])
      • v789 (65) = Phi <uintptr> v69 v790 (keymaybe[uintptr])
      • v794 (47) = Phi <unsafe.Pointer> v188 v426 (p[unsafe.Pointer], kptr[unsafe.Pointer], k[*stringStruct])
      • v377 (+46) = CMPQconst <flags> [8] v191
    • ULT v377b39 b41 (likely) (46)
    • b39: ← b38
      • v351 (+48) = CMPQload <flags> [8] v794 v62 v42
    • NE v351b51 b42 (48)
    • b41: ← b38 b50
      • v335 (+71) = CMPQconst <flags> [8] v789
    • NE v335b68 b66 (71)
    • b42: ← b39
      • v206 (48) = LoweredNilCheck <void> v57 v42
      • v486 (48) = MOVBloadidx1 <uint8> v191 v57 v42
      • v487 (48) = CMPBconst <flags> [1] v486
    • ULE v487b51 b47 (+48)
    • b47: ← b42
      • v235 (+54) = MOVQload <unsafe.Pointer> v794 v42
      • v239 (54) = MOVQload <unsafe.Pointer> {ky} v505 v42
      • v604 (54) = CMPQ <flags> v239 v235
    • EQ v604b55 b53 (54)
    • b49: ← b51
    • Plainb65 (+52)
    • b50: ← b51
    • Plainb41 (+50)
    • b51: ← b42 b39
      • v221 (+49) = LoweredNilCheck <void> v57 v42
      • v597 (49) = MOVBloadidx1 <uint8> v191 v57 v42
      • v436 (49) = TESTB <flags> v597 v597
    • EQ v436b50 b49 (49)
    • b53: ← b47
      • v270 (+58) = LoweredNilCheck <void> v239 v42
      • v303 (58) = LoweredNilCheck <void> v235 v42
      • v211 (58) = MOVLload <uint32> v235 v42
      • v82 (58) = CMPLload <flags> v239 v211 v42
    • NE v82b57 b59 (58)
    • b55: ← b47
      • v246 (+55) = LoweredNilCheck <void> v8 v42
      • v252 (55) = InlMark <void> [5613] v42
      • v253 (+18) = Convert <uintptr> v57 v42
      • v713 (55) = MOVBload <uintptr> [81] v8 v42
      • v250 (55) = MULQ <uintptr> v191 v713
      • v254 (18) = LEAQ1 <uintptr> [136] v250 v253
      • v255 (18) = Convert <unsafe.Pointer> v254 v42 (~R0[unsafe.Pointer])
      • v257 (+55) = MakeResult <unsafe.Pointer,mem> v255 v42
    • Ret v257 (+55)
    • b57: ← b53
    • Plainb65 (+59)
    • b59: ← b53
      • v341 (+62) = InlMark <void> [5614] v42
      • v342 (+18) = Convert <uintptr> v239 v42
      • v343 (18) = LEAQ1 <uintptr> [-4] v342 v62
      • v344 (18) = Convert <unsafe.Pointer> v343 v42 (~R0[unsafe.Pointer])
      • v356 (+62) = InlMark <void> [5615] v42
      • v357 (+18) = Convert <uintptr> v235 v42
      • v358 (18) = LEAQ1 <uintptr> [-4] v357 v62
      • v359 (18) = Convert <unsafe.Pointer> v358 v42 (~R0[unsafe.Pointer])
      • v365 (+62) = LoweredNilCheck <void> v344 v42
      • v391 (62) = LoweredNilCheck <void> v359 v42
      • v98 (62) = MOVLload <uint32> v359 v42
      • v562 (62) = CMPLload <flags> v344 v98 v42
    • NE v562b61 b60 (62)
    • b60: ← b59
      • v545 (+65) = CMPQconst <flags> [8] v789
    • NE v545b63 b62 (65)
    • b61: ← b59
    • Plainb65 (+63)
    • b62: ← b60
    • Plainb65 (+69)
    • b63: ← b60
    • Plainb75 (+67)
    • b65: ← b49 b57 b61 b62
      • v790 (65) = Phi <uintptr> v789 v789 v789 v191 (keymaybe[uintptr])
      • v423 (+46) = InlMark <void> [5611] v42
      • v426 (+18) = ADDQconst <unsafe.Pointer> [16] v794 (~R0[unsafe.Pointer], kptr[unsafe.Pointer])
      • v428 (+46) = ADDQconst <uintptr> [1] v191 (i[uintptr])
    • Plainb38 (46)
    • b66: ← b41 b69
      • v483 (77) = Phi <mem> v42 v459
      • v480 (77) = LEAQ <*byte> {runtime.zeroVal} v3
      • v482 (+77) = MakeResult <unsafe.Pointer,mem> v480 v483
    • Ret v482 (+77)
    • b68: ← b41
      • v440 (72) = InlMark <void> [5616] v42
      • v441 (+18) = Convert <uintptr> v57 v42
      • v453 (73) = MOVQload <unsafe.Pointer> {ky} v505 v42
      • v456 (+72) = SHLQconst <uintptr> [4] v789
      • v442 (18) = LEAQ1 <uintptr> [8] v456 v441
      • v443 (18) = Convert <unsafe.Pointer> v442 v42 (k[*stringStruct], ~R0[unsafe.Pointer])
      • v449 (73) = MOVQload <unsafe.Pointer> v443 v42
      • v458 (73) = CALLstatic <bool,mem> {AuxCall{runtime.memequal}} [24] v449 v453 v62 v42
      • v460 (73) = SelectN <bool> [0] v458
      • v459 (73) = SelectN <mem> [1] v458
      • v506 (73) = TESTB <flags> v460 v460
      • v447 (+73) = LoweredNilCheck <void> v443 v42
    • NE v506b71 b69 (73)
    • b69: ← b68
    • Plainb66 (+77)
    • b71: ← b68
      • v466 (+74) = LoweredNilCheck <void> v8 v459
      • v472 (74) = InlMark <void> [5617] v459
      • v473 (+18) = Convert <uintptr> v57 v459
      • v606 (74) = MOVBload <uintptr> [81] v8 v459
      • v470 (74) = MULQ <uintptr> v789 v606
      • v474 (18) = LEAQ1 <uintptr> [136] v473 v470
      • v475 (18) = Convert <unsafe.Pointer> v474 v459 (~R0[unsafe.Pointer])
      • v477 (+74) = MakeResult <unsafe.Pointer,mem> v475 v459
    • Ret v477 (+74)
    • b75: ← b63 b9
      • v497 (80) = LoweredNilCheck <void> v8 v42
      • v499 (+80) = MOVQload <func(unsafe.Pointer, uintptr) uintptr> [72] v8 v42
      • v501 (80) = MOVQload <uintptr> v499 v42
      • v607 (+80) = MOVLload <uintptr> [12] v9 v42
      • v502 (80) = CALLclosure <uintptr,mem> {AuxCall{nil}} [16] v501 v499 v6 v607 v42
      • v504 (80) = SelectN <uintptr> [0] v502 (hash[uintptr], hash[uintptr])
      • v503 (80) = SelectN <mem> [1] v502
      • v507 (+81) = MOVBload <uint8> [9] v9 v503 (b[uint8], b[uint8])
      • v508 (81) = InlMark <void> [5619] v503
      • v509 (+192) = InlMark <void> [5631] v503
      • v512 (+187) = SHLQ <uintptr> v173 v507 (~R0[uintptr])
      • v514 (+192) = ADDQconst <uintptr> [-1] v512 (m[uintptr], ~R0[uintptr])
      • v522 (+82) = ANDQ <uintptr> v514 v504
      • v529 (82) = InlMark <void> [5620] v503
      • v539 (+83) = MOVQload <unsafe.Pointer> [24] v9 v503 (c[unsafe.Pointer], p[unsafe.Pointer])
      • v349 (83) = TESTQ <flags> v539 v539
      • v720 (82) = MOVWload <uintptr> [82] v8 v503
      • v528 (82) = MULQ <uintptr> v720 v522 (x[uintptr])
      • v532 (+18) = ADDQload <unsafe.Pointer> [16] v528 v9 v503 (b[*bmap], ~R0[unsafe.Pointer])
    • NE v349b78 b76 (83)
    • b76: ← b75 b85
      • v756 (94) = Phi <*bmap> v532 v757 (b[*bmap])
      • v586 (+93) = InlMark <void> [5624] v503
      • v337 (+197) = SHRQconst <uintptr> [56] v504
      • v333 (+198) = CMPBconst <flags> [5] v337
    • ULT v333b88 b89 (198)
    • b78: ← b75
      • v543 (+84) = InlMark <void> [5621] v503
      • v546 (+1128) = MOVBload <uint8> [8] v9 v503
      • v267 (1128) = TESTBconst <flags> [8] v546
    • NE v267b84 b80 (+84)
    • b80: ← b78
      • v263 (+86) = SHRQconst <uintptr> [1] v514
    • Plainb84 (+86)
    • b84: ← b78 b80
      • v556 (88) = Phi <uintptr> v514 v263 (m[uintptr])
      • v557 (+88) = ANDQ <uintptr> v556 v504
      • v564 (88) = MULQ <uintptr> v720 v557 (x[uintptr])
      • v565 (88) = InlMark <void> [5622] v503
      • v568 (+18) = ADDQ <unsafe.Pointer> v539 v564 (~R0[unsafe.Pointer], b[*bmap], b[*bmap], oldb[*bmap])
      • v572 (+89) = InlMark <void> [5623] v503
      • v576 (+205) = MOVBloadidx1 <uint8> v539 v564 v503 (h[uint8])
      • v518 (+206) = ADDLconst <uint8> [-2] v576
      • v140 (+206) = CMPBconst <flags> [3] v518
    • ULT v140b85 b86 (+89)
    • b85: ← b84 b86
      • v757 (94) = Phi <*bmap> v532 v568 (b[*bmap])
    • Plainb76
    • b86: ← b84
    • Plainb85 (+90)
    • b88: ← b76
      • v592 (+199) = ADDLconst <uint8> [5] v337 (top[uint8])
    • Plainb89 (199)
    • b89: ← b76 b88
      • v593 (93) = Phi <uint8> v337 v592 (~R0[uint8], top[uint8], top[uint8])
    • Plainb103 (+94)
    • b90: ← b103 b113
      • v753 (105) = Phi <mem> v503 v751
    • Plainb95 (94)
    • b93: ← b113 b103
      • v637 (94) = Phi <*bmap> v707 v756
      • v626 (105) = Phi <mem> v751 v503
      • v710 (105) = LEAQ <*byte> {runtime.zeroVal} v3
      • v712 (+105) = MakeResult <unsafe.Pointer,mem> v710 v753
    • Ret v712 (+105)
    • b95: ← b90
      • v600 (+95) = InlMark <void> [5626] v626
      • v602 (+218) = InlMark <void> [5633] v626
      • v605 (+18) = ADDQconst <unsafe.Pointer> [8] v637 (~R0[unsafe.Pointer], ~R0[unsafe.Pointer], kptr[unsafe.Pointer])
    • Plainb96 (+95)
    • b96: ← b95 b111
      • v608 (95) = Phi <uintptr> v75 v687 (i[uintptr])
      • v751 (97) = Phi <mem> v626 v681
      • v752 (96) = Phi <unsafe.Pointer> v605 v685 (kptr[unsafe.Pointer], k[*stringStruct], p[unsafe.Pointer])
      • v137 (+95) = CMPQconst <flags> [8] v608
    • ULT v137b97 b113 (likely) (95)
    • b97: ← b96
      • v619 (+97) = MOVQload <int> {ky} [8] v505 v751
      • v471 (+97) = CMPQload <flags> [8] v752 v619 v751
    • NE v471b105 b100 (97)
    • b100: ← b97
      • v689 (97) = MOVBloadidx1 <uint8> v637 v608 v751
      • v567 (97) = CMPB <flags> v689 v593
    • NE v567b105 b104 (97)
    • b104: ← b100
      • v639 (+100) = MOVQload <unsafe.Pointer> v752 v751
      • v643 (100) = MOVQload <unsafe.Pointer> {ky} v505 v751
      • v566 (100) = CMPQ <flags> v643 v639
    • EQ v566b110 b106 (100)
    • b105: ← b100 b97
    • Plainb111 (+98)
    • b106: ← b104
      • v658 (100) = CALLstatic <bool,mem> {AuxCall{runtime.memequal}} [24] v639 v643 v619 v751
      • v660 (100) = SelectN <bool> [0] v658
      • v659 (100) = SelectN <mem> [1] v658
      • v176 (100) = TESTB <flags> v660 v660
    • NE v176b110 b108 (100)
    • b108: ← b106
    • Plainb111 (100)
    • b110: ← b106 b104
      • v704 (101) = Phi <mem> v659 v751
      • v673 (101) = InlMark <void> [5628] v704
      • v674 (+18) = Convert <uintptr> v637 v704
      • v531 (+101) = MOVBload <uintptr> [81] v8 v704
      • v671 (+101) = MULQ <uintptr> v608 v531
      • v675 (18) = LEAQ1 <uintptr> [136] v674 v671
      • v676 (18) = Convert <unsafe.Pointer> v675 v704 (~R0[unsafe.Pointer])
      • v678 (+101) = MakeResult <unsafe.Pointer,mem> v676 v704
    • Ret v678 (+101)
    • b111: ← b105 b108
      • v681 (95) = Phi <mem> v751 v659
      • v682 (+95) = InlMark <void> [5627] v681
      • v685 (+18) = ADDQconst <unsafe.Pointer> [16] v752 (kptr[unsafe.Pointer], ~R0[unsafe.Pointer])
      • v687 (+95) = ADDQconst <uintptr> [1] v608 (i[uintptr])
    • Plainb96 (95)
    • b113: ← b96
      • v692 (+94) = InlMark <void> [5625] v751
      • v699 (+210) = InlMark <void> [5632] v751
      • v700 (+18) = Convert <uintptr> v637 v751
      • v530 (+210) = MOVWload <uintptr> [82] v8 v751
      • v701 (18) = LEAQ1 <uintptr> [-8] v700 v530
      • v702 (18) = Convert <unsafe.Pointer> v701 v751 (~R0[unsafe.Pointer])
      • v706 (+210) = LoweredNilCheck <void> v702 v751
      • v707 (210) = MOVQload <*bmap> v702 v751 (~R0[*bmap], b[*bmap])
      • v630 (+94) = TESTQ <flags> v707 v707
    • NE v630b90 b93 (+94)
    • b103: ← b89
      • v698 (+94) = TESTQ <flags> v756 v756
    • NE v698b90 b93 (likely)
  • name t[*abi.MapType]: v8
  • name h[*hmap]: v9
  • name sp[*string]: v6
  • name ~R0[*stringStruct]: v6
  • name key[*stringStruct]: v6
  • name b[*bmap]: v57
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v73
  • name ~R0[unsafe.Pointer]: v73
  • name i[uintptr]: v75 v77 v174
  • name kptr[unsafe.Pointer]: v73 v816 v171
  • name k[*stringStruct]: v816
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v161
  • name p[unsafe.Pointer]: v816
  • name ~R0[unsafe.Pointer]: v171
  • name keymaybe[uintptr]: v69 v789 v191 v790
  • name b[*bmap]: v57
  • name p[unsafe.Pointer]: v57
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v188
  • name ~R0[unsafe.Pointer]: v188
  • name i[uintptr]: v75 v191 v428
  • name kptr[unsafe.Pointer]: v188 v794 v426
  • name k[*stringStruct]: v794
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v255
  • name ~R0[unsafe.Pointer]: v344
  • name ~R0[unsafe.Pointer]: v359
  • name p[unsafe.Pointer]: v794
  • name ~R0[unsafe.Pointer]: v426
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v443
  • name k[*stringStruct]: v443
  • name p[unsafe.Pointer]: v57
  • name ~R0[unsafe.Pointer]: v475
  • name p[unsafe.Pointer]: v6
  • name hash[uintptr]: v504
  • name b[uint8]: v507
  • name b[uint8]: v507
  • name ~R0[uintptr]: v512
  • name ~R0[uintptr]: v514
  • name m[uintptr]: v514 v556
  • name x[uintptr]: v528
  • name ~R0[unsafe.Pointer]: v532
  • name b[*bmap]: v532 v568 v707 v756 v757
  • name c[unsafe.Pointer]: v539
  • name h[*hmap]: v9
  • name p[unsafe.Pointer]: v539
  • name x[uintptr]: v564
  • name ~R0[unsafe.Pointer]: v568
  • name oldb[*bmap]: v568
  • name b[*bmap]: v568
  • name h[uint8]: v576
  • name hash[uintptr]: v504
  • name top[uint8]: v592 v593
  • name ~R0[uint8]: v593
  • name top[uint8]: v593
  • name x[uintptr]: v69
  • name ~R0[unsafe.Pointer]: v605
  • name ~R0[unsafe.Pointer]: v605
  • name i[uintptr]: v75 v608 v687
  • name kptr[unsafe.Pointer]: v605 v752 v685
  • name k[*stringStruct]: v752
  • name ~R0[unsafe.Pointer]: v676
  • name p[unsafe.Pointer]: v752
  • name ~R0[unsafe.Pointer]: v685
  • name t[*abi.MapType]: v8
  • name ~R0[unsafe.Pointer]: v702
  • name ~R0[*bmap]: v707